!function (e, t) {
    var n, i, r = typeof t, o = e.location, s = e.document, a = s.documentElement, u = e.jQuery, l = e.$, f = {}, c = [], p = "1.10.2", d = c.concat, h = c.push, g = c.slice, m = c.indexOf, y = f.toString, v = f.hasOwnProperty, b = p.trim, x = function (e, t) {
        return new x.fn.init(e, t, i)
    }, w = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, T = /\S+/g, C = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, N = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, k = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, E = /^[\],:{}\s]*$/, S = /(?:^|:|,)(?:\s*\[)+/g, A = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, j = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, D = /^-ms-/, L = /-([\da-z])/gi, H = function (e, t) {
        return t.toUpperCase()
    }, q = function (e) {
        if (s.addEventListener || e.type === "load" || s.readyState === "complete") {
            _();
            x.ready()
        }
    }, _ = function () {
        if (s.addEventListener) {
            s.removeEventListener("DOMContentLoaded", q, false);
            e.removeEventListener("load", q, false)
        } else {
            s.detachEvent("onreadystatechange", q);
            e.detachEvent("onload", q)
        }
    };
    x.fn = x.prototype = {jquery: p, constructor: x, init: function (e, n, i) {
        var r, o;
        if (!e) {
            return this
        }
        if (typeof e === "string") {
            if (e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3) {
                r = [null, e, null]
            } else {
                r = N.exec(e)
            }
            if (r && (r[1] || !n)) {
                if (r[1]) {
                    n = n instanceof x ? n[0] : n;
                    x.merge(this, x.parseHTML(r[1], n && n.nodeType ? n.ownerDocument || n : s, true));
                    if (k.test(r[1]) && x.isPlainObject(n)) {
                        for (r in n) {
                            if (x.isFunction(this[r])) {
                                this[r](n[r])
                            } else {
                                this.attr(r, n[r])
                            }
                        }
                    }
                    return this
                } else {
                    o = s.getElementById(r[2]);
                    if (o && o.parentNode) {
                        if (o.id !== r[2]) {
                            return i.find(e)
                        }
                        this.length = 1;
                        this[0] = o
                    }
                    this.context = s;
                    this.selector = e;
                    return this
                }
            } else if (!n || n.jquery) {
                return(n || i).find(e)
            } else {
                return this.constructor(n).find(e)
            }
        } else if (e.nodeType) {
            this.context = this[0] = e;
            this.length = 1;
            return this
        } else if (x.isFunction(e)) {
            return i.ready(e)
        }
        if (e.selector !== t) {
            this.selector = e.selector;
            this.context = e.context
        }
        return x.makeArray(e, this)
    }, selector: "", length: 0, toArray: function () {
        return g.call(this)
    }, get: function (e) {
        return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
    }, pushStack: function (e) {
        var t = x.merge(this.constructor(), e);
        t.prevObject = this;
        t.context = this.context;
        return t
    }, each: function (e, t) {
        return x.each(this, e, t)
    }, ready: function (e) {
        x.ready.promise().done(e);
        return this
    }, slice: function () {
        return this.pushStack(g.apply(this, arguments))
    }, first: function () {
        return this.eq(0)
    }, last: function () {
        return this.eq(-1)
    }, eq: function (e) {
        var t = this.length, n = +e + (e < 0 ? t : 0);
        return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
    }, map: function (e) {
        return this.pushStack(x.map(this, function (t, n) {
            return e.call(t, n, t)
        }))
    }, end: function () {
        return this.prevObject || this.constructor(null)
    }, push: h, sort: [].sort, splice: [].splice};
    x.fn.init.prototype = x.fn;
    x.extend = x.fn.extend = function () {
        var e, n, i, r, o, s, a = arguments[0] || {}, u = 1, l = arguments.length, f = false;
        if (typeof a === "boolean") {
            f = a;
            a = arguments[1] || {};
            u = 2
        }
        if (typeof a !== "object" && !x.isFunction(a)) {
            a = {}
        }
        if (l === u) {
            a = this;
            --u
        }
        for (; u < l; u++) {
            if ((o = arguments[u]) != null) {
                for (r in o) {
                    e = a[r];
                    i = o[r];
                    if (a === i) {
                        continue
                    }
                    if (f && i && (x.isPlainObject(i) || (n = x.isArray(i)))) {
                        if (n) {
                            n = false;
                            s = e && x.isArray(e) ? e : []
                        } else {
                            s = e && x.isPlainObject(e) ? e : {}
                        }
                        a[r] = x.extend(f, s, i)
                    } else if (i !== t) {
                        a[r] = i
                    }
                }
            }
        }
        return a
    };
    x.extend({expando: "jQuery" + (p + Math.random()).replace(/\D/g, ""), noConflict: function (t) {
        if (e.$ === x) {
            e.$ = l
        }
        if (t && e.jQuery === x) {
            e.jQuery = u
        }
        return x
    }, isReady: false, readyWait: 1, holdReady: function (e) {
        if (e) {
            x.readyWait++
        } else {
            x.ready(true)
        }
    }, ready: function (e) {
        if (e === true ? --x.readyWait : x.isReady) {
            return
        }
        if (!s.body) {
            return setTimeout(x.ready)
        }
        x.isReady = true;
        if (e !== true && --x.readyWait > 0) {
            return
        }
        n.resolveWith(s, [x]);
        if (x.fn.trigger) {
            x(s).trigger("ready").off("ready")
        }
    }, isFunction: function (e) {
        return x.type(e) === "function"
    }, isArray: Array.isArray || function (e) {
        return x.type(e) === "array"
    }, isWindow: function (e) {
        return e != null && e == e.window
    }, isNumeric: function (e) {
        return!isNaN(parseFloat(e)) && isFinite(e)
    }, type: function (e) {
        if (e == null) {
            return String(e)
        }
        return typeof e === "object" || typeof e === "function" ? f[y.call(e)] || "object" : typeof e
    }, isPlainObject: function (e) {
        var n;
        if (!e || x.type(e) !== "object" || e.nodeType || x.isWindow(e)) {
            return false
        }
        try {
            if (e.constructor && !v.call(e, "constructor") && !v.call(e.constructor.prototype, "isPrototypeOf")) {
                return false
            }
        } catch (i) {
            return false
        }
        if (x.support.ownLast) {
            for (n in e) {
                return v.call(e, n)
            }
        }
        for (n in e) {
        }
        return n === t || v.call(e, n)
    }, isEmptyObject: function (e) {
        var t;
        for (t in e) {
            return false
        }
        return true
    }, error: function (e) {
        throw new Error(e)
    }, parseHTML: function (e, t, n) {
        if (!e || typeof e !== "string") {
            return null
        }
        if (typeof t === "boolean") {
            n = t;
            t = false
        }
        t = t || s;
        var i = k.exec(e), r = !n && [];
        if (i) {
            return[t.createElement(i[1])]
        }
        i = x.buildFragment([e], t, r);
        if (r) {
            x(r).remove()
        }
        return x.merge([], i.childNodes)
    }, parseJSON: function (t) {
        if (e.JSON && e.JSON.parse) {
            return e.JSON.parse(t)
        }
        if (t === null) {
            return t
        }
        if (typeof t === "string") {
            t = x.trim(t);
            if (t) {
                if (E.test(t.replace(A, "@").replace(j, "]").replace(S, ""))) {
                    return new Function("return " + t)()
                }
            }
        }
        x.error("Invalid JSON: " + t)
    }, parseXML: function (n) {
        var i, r;
        if (!n || typeof n !== "string") {
            return null
        }
        try {
            if (e.DOMParser) {
                r = new DOMParser;
                i = r.parseFromString(n, "text/xml")
            } else {
                i = new ActiveXObject("Microsoft.XMLDOM");
                i.async = "false";
                i.loadXML(n)
            }
        } catch (o) {
            i = t
        }
        if (!i || !i.documentElement || i.getElementsByTagName("parsererror").length) {
            x.error("Invalid XML: " + n)
        }
        return i
    }, noop: function () {
    }, globalEval: function (t) {
        if (t && x.trim(t)) {
            (e.execScript || function (t) {
                e["eval"].call(e, t)
            })(t)
        }
    }, camelCase: function (e) {
        return e.replace(D, "ms-").replace(L, H)
    }, nodeName: function (e, t) {
        return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
    }, each: function (e, t, n) {
        var i, r = 0, o = e.length, s = M(e);
        if (n) {
            if (s) {
                for (; r < o; r++) {
                    i = t.apply(e[r], n);
                    if (i === false) {
                        break
                    }
                }
            } else {
                for (r in e) {
                    i = t.apply(e[r], n);
                    if (i === false) {
                        break
                    }
                }
            }
        } else {
            if (s) {
                for (; r < o; r++) {
                    i = t.call(e[r], r, e[r]);
                    if (i === false) {
                        break
                    }
                }
            } else {
                for (r in e) {
                    i = t.call(e[r], r, e[r]);
                    if (i === false) {
                        break
                    }
                }
            }
        }
        return e
    }, trim: b && !b.call("﻿ ") ? function (e) {
        return e == null ? "" : b.call(e)
    } : function (e) {
        return e == null ? "" : (e + "").replace(C, "")
    }, makeArray: function (e, t) {
        var n = t || [];
        if (e != null) {
            if (M(Object(e))) {
                x.merge(n, typeof e === "string" ? [e] : e)
            } else {
                h.call(n, e)
            }
        }
        return n
    }, inArray: function (e, t, n) {
        var i;
        if (t) {
            if (m) {
                return m.call(t, e, n)
            }
            i = t.length;
            n = n ? n < 0 ? Math.max(0, i + n) : n : 0;
            for (; n < i; n++) {
                if (n in t && t[n] === e) {
                    return n
                }
            }
        }
        return-1
    }, merge: function (e, n) {
        var i = n.length, r = e.length, o = 0;
        if (typeof i === "number") {
            for (; o < i; o++) {
                e[r++] = n[o]
            }
        } else {
            while (n[o] !== t) {
                e[r++] = n[o++]
            }
        }
        e.length = r;
        return e
    }, grep: function (e, t, n) {
        var i, r = [], o = 0, s = e.length;
        n = !!n;
        for (; o < s; o++) {
            i = !!t(e[o], o);
            if (n !== i) {
                r.push(e[o])
            }
        }
        return r
    }, map: function (e, t, n) {
        var i, r = 0, o = e.length, s = M(e), a = [];
        if (s) {
            for (; r < o; r++) {
                i = t(e[r], r, n);
                if (i != null) {
                    a[a.length] = i
                }
            }
        } else {
            for (r in e) {
                i = t(e[r], r, n);
                if (i != null) {
                    a[a.length] = i
                }
            }
        }
        return d.apply([], a)
    }, guid: 1, proxy: function (e, n) {
        var i, r, o;
        if (typeof n === "string") {
            o = e[n];
            n = e;
            e = o
        }
        if (!x.isFunction(e)) {
            return t
        }
        i = g.call(arguments, 2);
        r = function () {
            return e.apply(n || this, i.concat(g.call(arguments)))
        };
        r.guid = e.guid = e.guid || x.guid++;
        return r
    }, access: function (e, n, i, r, o, s, a) {
        var u = 0, l = e.length, f = i == null;
        if (x.type(i) === "object") {
            o = true;
            for (u in i) {
                x.access(e, n, u, i[u], true, s, a)
            }
        } else if (r !== t) {
            o = true;
            if (!x.isFunction(r)) {
                a = true
            }
            if (f) {
                if (a) {
                    n.call(e, r);
                    n = null
                } else {
                    f = n;
                    n = function (e, t, n) {
                        return f.call(x(e), n)
                    }
                }
            }
            if (n) {
                for (; u < l; u++) {
                    n(e[u], i, a ? r : r.call(e[u], u, n(e[u], i)))
                }
            }
        }
        return o ? e : f ? n.call(e) : l ? n(e[0], i) : s
    }, now: function () {
        return(new Date).getTime()
    }, swap: function (e, t, n, i) {
        var r, o, s = {};
        for (o in t) {
            s[o] = e.style[o];
            e.style[o] = t[o]
        }
        r = n.apply(e, i || []);
        for (o in t) {
            e.style[o] = s[o]
        }
        return r
    }});
    x.ready.promise = function (t) {
        if (!n) {
            n = x.Deferred();
            if (s.readyState === "complete") {
                setTimeout(x.ready)
            } else if (s.addEventListener) {
                s.addEventListener("DOMContentLoaded", q, false);
                e.addEventListener("load", q, false)
            } else {
                s.attachEvent("onreadystatechange", q);
                e.attachEvent("onload", q);
                var i = false;
                try {
                    i = e.frameElement == null && s.documentElement
                } catch (r) {
                }
                if (i && i.doScroll) {
                    !function o() {
                        if (!x.isReady) {
                            try {
                                i.doScroll("left")
                            } catch (e) {
                                return setTimeout(o, 50)
                            }
                            _();
                            x.ready()
                        }
                    }()
                }
            }
        }
        return n.promise(t)
    };
    x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (e, t) {
        f["[object " + t + "]"] = t.toLowerCase()
    });
    function M(e) {
        var t = e.length, n = x.type(e);
        if (x.isWindow(e)) {
            return false
        }
        if (e.nodeType === 1 && t) {
            return true
        }
        return n === "array" || n !== "function" && (t === 0 || typeof t === "number" && t > 0 && t - 1 in e)
    }

    i = x(s);
    !function (e, t) {
        var n, i, r, o, s, a, u, l, f, c, p, d, h, g, m, y, v, b = "sizzle" + -new Date, w = e.document, T = 0, C = 0, N = at(), k = at(), E = at(), S = false, A = function (e, t) {
            if (e === t) {
                S = true;
                return 0
            }
            return 0
        }, j = typeof t, D = 1 << 31, L = {}.hasOwnProperty, H = [], q = H.pop, _ = H.push, M = H.push, O = H.slice, F = H.indexOf || function (e) {
            var t = 0, n = this.length;
            for (; t < n; t++) {
                if (this[t] === e) {
                    return t
                }
            }
            return-1
        }, B = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", P = "[\\x20\\t\\r\\n\\f]", R = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", W = R.replace("w", "w#"), $ = "\\[" + P + "*(" + R + ")" + P + "*(?:([*^$|!~]?=)" + P + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + W + ")|)|)" + P + "*\\]", I = ":(" + R + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + $.replace(3, 8) + ")*)|.*)\\)|)", z = new RegExp("^" + P + "+|((?:^|[^\\\\])(?:\\\\.)*)" + P + "+$", "g"), X = new RegExp("^" + P + "*," + P + "*"), U = new RegExp("^" + P + "*([>+~]|" + P + ")" + P + "*"), V = new RegExp(P + "*[+~]"), Y = new RegExp("=" + P + "*([^\\]'\"]*)" + P + "*\\]", "g"), J = new RegExp(I), G = new RegExp("^" + W + "$"), Q = {ID: new RegExp("^#(" + R + ")"), CLASS: new RegExp("^\\.(" + R + ")"), TAG: new RegExp("^(" + R.replace("w", "w*") + ")"), ATTR: new RegExp("^" + $), PSEUDO: new RegExp("^" + I), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + P + "*(even|odd|(([+-]|)(\\d*)n|)" + P + "*(?:([+-]|)" + P + "*(\\d+)|))" + P + "*\\)|)", "i"), bool: new RegExp("^(?:" + B + ")$", "i"), needsContext: new RegExp("^" + P + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + P + "*((?:-\\d)?\\d*)" + P + "*\\)|)(?=[^-]|$)", "i")}, K = /^[^{]+\{\s*\[native \w/, Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, et = /^(?:input|select|textarea|button)$/i, tt = /^h\d$/i, nt = /'|\\/g, it = new RegExp("\\\\([\\da-f]{1,6}" + P + "?|(" + P + ")|.)", "ig"), rt = function (e, t, n) {
            var i = "0x" + t - 65536;
            return i !== i || n ? t : i < 0 ? String.fromCharCode(i + 65536) : String.fromCharCode(i >> 10 | 55296, i & 1023 | 56320)
        };
        try {
            M.apply(H = O.call(w.childNodes), w.childNodes);
            H[w.childNodes.length].nodeType
        } catch (ot) {
            M = {apply: H.length ? function (e, t) {
                _.apply(e, O.call(t))
            } : function (e, t) {
                var n = e.length, i = 0;
                while (e[n++] = t[i++]) {
                }
                e.length = n - 1
            }}
        }
        function st(e, t, n, r) {
            var o, s, a, u, l, f, d, m, y, x;
            if ((t ? t.ownerDocument || t : w) !== p) {
                c(t)
            }
            t = t || p;
            n = n || [];
            if (!e || typeof e !== "string") {
                return n
            }
            if ((u = t.nodeType) !== 1 && u !== 9) {
                return[]
            }
            if (h && !r) {
                if (o = Z.exec(e)) {
                    if (a = o[1]) {
                        if (u === 9) {
                            s = t.getElementById(a);
                            if (s && s.parentNode) {
                                if (s.id === a) {
                                    n.push(s);
                                    return n
                                }
                            } else {
                                return n
                            }
                        } else {
                            if (t.ownerDocument && (s = t.ownerDocument.getElementById(a)) && v(t, s) && s.id === a) {
                                n.push(s);
                                return n
                            }
                        }
                    } else if (o[2]) {
                        M.apply(n, t.getElementsByTagName(e));
                        return n
                    } else if ((a = o[3]) && i.getElementsByClassName && t.getElementsByClassName) {
                        M.apply(n, t.getElementsByClassName(a));
                        return n
                    }
                }
                if (i.qsa && (!g || !g.test(e))) {
                    m = d = b;
                    y = t;
                    x = u === 9 && e;
                    if (u === 1 && t.nodeName.toLowerCase() !== "object") {
                        f = mt(e);
                        if (d = t.getAttribute("id")) {
                            m = d.replace(nt, "\\$&")
                        } else {
                            t.setAttribute("id", m)
                        }
                        m = "[id='" + m + "'] ";
                        l = f.length;
                        while (l--) {
                            f[l] = m + yt(f[l])
                        }
                        y = V.test(e) && t.parentNode || t;
                        x = f.join(",")
                    }
                    if (x) {
                        try {
                            M.apply(n, y.querySelectorAll(x));
                            return n
                        } catch (T) {
                        } finally {
                            if (!d) {
                                t.removeAttribute("id")
                            }
                        }
                    }
                }
            }
            return kt(e.replace(z, "$1"), t, n, r)
        }

        function at() {
            var e = [];

            function t(n, i) {
                if (e.push(n += " ") > o.cacheLength) {
                    delete t[e.shift()]
                }
                return t[n] = i
            }

            return t
        }

        function ut(e) {
            e[b] = true;
            return e
        }

        function lt(e) {
            var t = p.createElement("div");
            try {
                return!!e(t)
            } catch (n) {
                return false
            } finally {
                if (t.parentNode) {
                    t.parentNode.removeChild(t)
                }
                t = null
            }
        }

        function ft(e, t) {
            var n = e.split("|"), i = e.length;
            while (i--) {
                o.attrHandle[n[i]] = t
            }
        }

        function ct(e, t) {
            var n = t && e, i = n && e.nodeType === 1 && t.nodeType === 1 && (~t.sourceIndex || D) - (~e.sourceIndex || D);
            if (i) {
                return i
            }
            if (n) {
                while (n = n.nextSibling) {
                    if (n === t) {
                        return-1
                    }
                }
            }
            return e ? 1 : -1
        }

        function pt(e) {
            return function (t) {
                var n = t.nodeName.toLowerCase();
                return n === "input" && t.type === e
            }
        }

        function dt(e) {
            return function (t) {
                var n = t.nodeName.toLowerCase();
                return(n === "input" || n === "button") && t.type === e
            }
        }

        function ht(e) {
            return ut(function (t) {
                t = +t;
                return ut(function (n, i) {
                    var r, o = e([], n.length, t), s = o.length;
                    while (s--) {
                        if (n[r = o[s]]) {
                            n[r] = !(i[r] = n[r])
                        }
                    }
                })
            })
        }

        a = st.isXML = function (e) {
            var t = e && (e.ownerDocument || e).documentElement;
            return t ? t.nodeName !== "HTML" : false
        };
        i = st.support = {};
        c = st.setDocument = function (e) {
            var t = e ? e.ownerDocument || e : w, n = t.defaultView;
            if (t === p || t.nodeType !== 9 || !t.documentElement) {
                return p
            }
            p = t;
            d = t.documentElement;
            h = !a(t);
            if (n && n.attachEvent && n !== n.top) {
                n.attachEvent("onbeforeunload", function () {
                    c()
                })
            }
            i.attributes = lt(function (e) {
                e.className = "i";
                return!e.getAttribute("className")
            });
            i.getElementsByTagName = lt(function (e) {
                e.appendChild(t.createComment(""));
                return!e.getElementsByTagName("*").length
            });
            i.getElementsByClassName = lt(function (e) {
                e.innerHTML = "<div class='a'></div><div class='a i'></div>";
                e.firstChild.className = "i";
                return e.getElementsByClassName("i").length === 2
            });
            i.getById = lt(function (e) {
                d.appendChild(e).id = b;
                return!t.getElementsByName || !t.getElementsByName(b).length
            });
            if (i.getById) {
                o.find["ID"] = function (e, t) {
                    if (typeof t.getElementById !== j && h) {
                        var n = t.getElementById(e);
                        return n && n.parentNode ? [n] : []
                    }
                };
                o.filter["ID"] = function (e) {
                    var t = e.replace(it, rt);
                    return function (e) {
                        return e.getAttribute("id") === t
                    }
                }
            } else {
                delete o.find["ID"];
                o.filter["ID"] = function (e) {
                    var t = e.replace(it, rt);
                    return function (e) {
                        var n = typeof e.getAttributeNode !== j && e.getAttributeNode("id");
                        return n && n.value === t
                    }
                }
            }
            o.find["TAG"] = i.getElementsByTagName ? function (e, t) {
                if (typeof t.getElementsByTagName !== j) {
                    return t.getElementsByTagName(e)
                }
            } : function (e, t) {
                var n, i = [], r = 0, o = t.getElementsByTagName(e);
                if (e === "*") {
                    while (n = o[r++]) {
                        if (n.nodeType === 1) {
                            i.push(n)
                        }
                    }
                    return i
                }
                return o
            };
            o.find["CLASS"] = i.getElementsByClassName && function (e, t) {
                if (typeof t.getElementsByClassName !== j && h) {
                    return t.getElementsByClassName(e)
                }
            };
            m = [];
            g = [];
            if (i.qsa = K.test(t.querySelectorAll)) {
                lt(function (e) {
                    e.innerHTML = "<select><option selected=''></option></select>";
                    if (!e.querySelectorAll("[selected]").length) {
                        g.push("\\[" + P + "*(?:value|" + B + ")")
                    }
                    if (!e.querySelectorAll(":checked").length) {
                        g.push(":checked")
                    }
                });
                lt(function (e) {
                    var n = t.createElement("input");
                    n.setAttribute("type", "hidden");
                    e.appendChild(n).setAttribute("t", "");
                    if (e.querySelectorAll("[t^='']").length) {
                        g.push("[*^$]=" + P + "*(?:''|\"\")")
                    }
                    if (!e.querySelectorAll(":enabled").length) {
                        g.push(":enabled", ":disabled")
                    }
                    e.querySelectorAll("*,:x");
                    g.push(",.*:")
                })
            }
            if (i.matchesSelector = K.test(y = d.webkitMatchesSelector || d.mozMatchesSelector || d.oMatchesSelector || d.msMatchesSelector)) {
                lt(function (e) {
                    i.disconnectedMatch = y.call(e, "div");
                    y.call(e, "[s!='']:x");
                    m.push("!=", I)
                })
            }
            g = g.length && new RegExp(g.join("|"));
            m = m.length && new RegExp(m.join("|"));
            v = K.test(d.contains) || d.compareDocumentPosition ? function (e, t) {
                var n = e.nodeType === 9 ? e.documentElement : e, i = t && t.parentNode;
                return e === i || !!(i && i.nodeType === 1 && (n.contains ? n.contains(i) : e.compareDocumentPosition && e.compareDocumentPosition(i) & 16))
            } : function (e, t) {
                if (t) {
                    while (t = t.parentNode) {
                        if (t === e) {
                            return true
                        }
                    }
                }
                return false
            };
            A = d.compareDocumentPosition ? function (e, n) {
                if (e === n) {
                    S = true;
                    return 0
                }
                var r = n.compareDocumentPosition && e.compareDocumentPosition && e.compareDocumentPosition(n);
                if (r) {
                    if (r & 1 || !i.sortDetached && n.compareDocumentPosition(e) === r) {
                        if (e === t || v(w, e)) {
                            return-1
                        }
                        if (n === t || v(w, n)) {
                            return 1
                        }
                        return f ? F.call(f, e) - F.call(f, n) : 0
                    }
                    return r & 4 ? -1 : 1
                }
                return e.compareDocumentPosition ? -1 : 1
            } : function (e, n) {
                var i, r = 0, o = e.parentNode, s = n.parentNode, a = [e], u = [n];
                if (e === n) {
                    S = true;
                    return 0
                } else if (!o || !s) {
                    return e === t ? -1 : n === t ? 1 : o ? -1 : s ? 1 : f ? F.call(f, e) - F.call(f, n) : 0
                } else if (o === s) {
                    return ct(e, n)
                }
                i = e;
                while (i = i.parentNode) {
                    a.unshift(i)
                }
                i = n;
                while (i = i.parentNode) {
                    u.unshift(i)
                }
                while (a[r] === u[r]) {
                    r++
                }
                return r ? ct(a[r], u[r]) : a[r] === w ? -1 : u[r] === w ? 1 : 0
            };
            return t
        };
        st.matches = function (e, t) {
            return st(e, null, null, t)
        };
        st.matchesSelector = function (e, t) {
            if ((e.ownerDocument || e) !== p) {
                c(e)
            }
            t = t.replace(Y, "='$1']");
            if (i.matchesSelector && h && (!m || !m.test(t)) && (!g || !g.test(t))) {
                try {
                    var n = y.call(e, t);
                    if (n || i.disconnectedMatch || e.document && e.document.nodeType !== 11) {
                        return n
                    }
                } catch (r) {
                }
            }
            return st(t, p, null, [e]).length > 0
        };
        st.contains = function (e, t) {
            if ((e.ownerDocument || e) !== p) {
                c(e)
            }
            return v(e, t)
        };
        st.attr = function (e, n) {
            if ((e.ownerDocument || e) !== p) {
                c(e)
            }
            var r = o.attrHandle[n.toLowerCase()], s = r && L.call(o.attrHandle, n.toLowerCase()) ? r(e, n, !h) : t;
            return s === t ? i.attributes || !h ? e.getAttribute(n) : (s = e.getAttributeNode(n)) && s.specified ? s.value : null : s
        };
        st.error = function (e) {
            throw new Error("Syntax error, unrecognized expression: " + e)
        };
        st.uniqueSort = function (e) {
            var t, n = [], r = 0, o = 0;
            S = !i.detectDuplicates;
            f = !i.sortStable && e.slice(0);
            e.sort(A);
            if (S) {
                while (t = e[o++]) {
                    if (t === e[o]) {
                        r = n.push(o)
                    }
                }
                while (r--) {
                    e.splice(n[r], 1)
                }
            }
            return e
        };
        s = st.getText = function (e) {
            var t, n = "", i = 0, r = e.nodeType;
            if (!r) {
                for (; t = e[i]; i++) {
                    n += s(t)
                }
            } else if (r === 1 || r === 9 || r === 11) {
                if (typeof e.textContent === "string") {
                    return e.textContent
                } else {
                    for (e = e.firstChild; e; e = e.nextSibling) {
                        n += s(e)
                    }
                }
            } else if (r === 3 || r === 4) {
                return e.nodeValue
            }
            return n
        };
        o = st.selectors = {cacheLength: 50, createPseudo: ut, match: Q, attrHandle: {}, find: {}, relative: {">": {dir: "parentNode", first: true}, " ": {dir: "parentNode"}, "+": {dir: "previousSibling", first: true}, "~": {dir: "previousSibling"}}, preFilter: {ATTR: function (e) {
            e[1] = e[1].replace(it, rt);
            e[3] = (e[4] || e[5] || "").replace(it, rt);
            if (e[2] === "~=") {
                e[3] = " " + e[3] + " "
            }
            return e.slice(0, 4)
        }, CHILD: function (e) {
            e[1] = e[1].toLowerCase();
            if (e[1].slice(0, 3) === "nth") {
                if (!e[3]) {
                    st.error(e[0])
                }
                e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * (e[3] === "even" || e[3] === "odd"));
                e[5] = +(e[7] + e[8] || e[3] === "odd")
            } else if (e[3]) {
                st.error(e[0])
            }
            return e
        }, PSEUDO: function (e) {
            var n, i = !e[5] && e[2];
            if (Q["CHILD"].test(e[0])) {
                return null
            }
            if (e[3] && e[4] !== t) {
                e[2] = e[4]
            } else if (i && J.test(i) && (n = mt(i, true)) && (n = i.indexOf(")", i.length - n) - i.length)) {
                e[0] = e[0].slice(0, n);
                e[2] = i.slice(0, n)
            }
            return e.slice(0, 3)
        }}, filter: {TAG: function (e) {
            var t = e.replace(it, rt).toLowerCase();
            return e === "*" ? function () {
                return true
            } : function (e) {
                return e.nodeName && e.nodeName.toLowerCase() === t
            }
        }, CLASS: function (e) {
            var t = N[e + " "];
            return t || (t = new RegExp("(^|" + P + ")" + e + "(" + P + "|$)")) && N(e, function (e) {
                return t.test(typeof e.className === "string" && e.className || typeof e.getAttribute !== j && e.getAttribute("class") || "")
            })
        }, ATTR: function (e, t, n) {
            return function (i) {
                var r = st.attr(i, e);
                if (r == null) {
                    return t === "!="
                }
                if (!t) {
                    return true
                }
                r += "";
                return t === "=" ? r === n : t === "!=" ? r !== n : t === "^=" ? n && r.indexOf(n) === 0 : t === "*=" ? n && r.indexOf(n) > -1 : t === "$=" ? n && r.slice(-n.length) === n : t === "~=" ? (" " + r + " ").indexOf(n) > -1 : t === "|=" ? r === n || r.slice(0, n.length + 1) === n + "-" : false
            }
        }, CHILD: function (e, t, n, i, r) {
            var o = e.slice(0, 3) !== "nth", s = e.slice(-4) !== "last", a = t === "of-type";
            return i === 1 && r === 0 ? function (e) {
                return!!e.parentNode
            } : function (t, n, u) {
                var l, f, c, p, d, h, g = o !== s ? "nextSibling" : "previousSibling", m = t.parentNode, y = a && t.nodeName.toLowerCase(), v = !u && !a;
                if (m) {
                    if (o) {
                        while (g) {
                            c = t;
                            while (c = c[g]) {
                                if (a ? c.nodeName.toLowerCase() === y : c.nodeType === 1) {
                                    return false
                                }
                            }
                            h = g = e === "only" && !h && "nextSibling"
                        }
                        return true
                    }
                    h = [s ? m.firstChild : m.lastChild];
                    if (s && v) {
                        f = m[b] || (m[b] = {});
                        l = f[e] || [];
                        d = l[0] === T && l[1];
                        p = l[0] === T && l[2];
                        c = d && m.childNodes[d];
                        while (c = ++d && c && c[g] || (p = d = 0) || h.pop()) {
                            if (c.nodeType === 1 && ++p && c === t) {
                                f[e] = [T, d, p];
                                break
                            }
                        }
                    } else if (v && (l = (t[b] || (t[b] = {}))[e]) && l[0] === T) {
                        p = l[1]
                    } else {
                        while (c = ++d && c && c[g] || (p = d = 0) || h.pop()) {
                            if ((a ? c.nodeName.toLowerCase() === y : c.nodeType === 1) && ++p) {
                                if (v) {
                                    (c[b] || (c[b] = {}))[e] = [T, p]
                                }
                                if (c === t) {
                                    break
                                }
                            }
                        }
                    }
                    p -= r;
                    return p === i || p % i === 0 && p / i >= 0
                }
            }
        }, PSEUDO: function (e, t) {
            var n, i = o.pseudos[e] || o.setFilters[e.toLowerCase()] || st.error("unsupported pseudo: " + e);
            if (i[b]) {
                return i(t)
            }
            if (i.length > 1) {
                n = [e, e, "", t];
                return o.setFilters.hasOwnProperty(e.toLowerCase()) ? ut(function (e, n) {
                    var r, o = i(e, t), s = o.length;
                    while (s--) {
                        r = F.call(e, o[s]);
                        e[r] = !(n[r] = o[s])
                    }
                }) : function (e) {
                    return i(e, 0, n)
                }
            }
            return i
        }}, pseudos: {not: ut(function (e) {
            var t = [], n = [], i = u(e.replace(z, "$1"));
            return i[b] ? ut(function (e, t, n, r) {
                var o, s = i(e, null, r, []), a = e.length;
                while (a--) {
                    if (o = s[a]) {
                        e[a] = !(t[a] = o)
                    }
                }
            }) : function (e, r, o) {
                t[0] = e;
                i(t, null, o, n);
                return!n.pop()
            }
        }), has: ut(function (e) {
            return function (t) {
                return st(e, t).length > 0
            }
        }), contains: ut(function (e) {
            return function (t) {
                return(t.textContent || t.innerText || s(t)).indexOf(e) > -1
            }
        }), lang: ut(function (e) {
            if (!G.test(e || "")) {
                st.error("unsupported lang: " + e)
            }
            e = e.replace(it, rt).toLowerCase();
            return function (t) {
                var n;
                do {
                    if (n = h ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) {
                        n = n.toLowerCase();
                        return n === e || n.indexOf(e + "-") === 0
                    }
                } while ((t = t.parentNode) && t.nodeType === 1);
                return false
            }
        }), target: function (t) {
            var n = e.location && e.location.hash;
            return n && n.slice(1) === t.id
        }, root: function (e) {
            return e === d
        }, focus: function (e) {
            return e === p.activeElement && (!p.hasFocus || p.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
        }, enabled: function (e) {
            return e.disabled === false
        }, disabled: function (e) {
            return e.disabled === true
        }, checked: function (e) {
            var t = e.nodeName.toLowerCase();
            return t === "input" && !!e.checked || t === "option" && !!e.selected
        }, selected: function (e) {
            if (e.parentNode) {
                e.parentNode.selectedIndex
            }
            return e.selected === true
        }, empty: function (e) {
            for (e = e.firstChild; e; e = e.nextSibling) {
                if (e.nodeName > "@" || e.nodeType === 3 || e.nodeType === 4) {
                    return false
                }
            }
            return true
        }, parent: function (e) {
            return!o.pseudos["empty"](e)
        }, header: function (e) {
            return tt.test(e.nodeName)
        }, input: function (e) {
            return et.test(e.nodeName)
        }, button: function (e) {
            var t = e.nodeName.toLowerCase();
            return t === "input" && e.type === "button" || t === "button"
        }, text: function (e) {
            var t;
            return e.nodeName.toLowerCase() === "input" && e.type === "text" && ((t = e.getAttribute("type")) == null || t.toLowerCase() === e.type)
        }, first: ht(function () {
            return[0]
        }), last: ht(function (e, t) {
            return[t - 1]
        }), eq: ht(function (e, t, n) {
            return[n < 0 ? n + t : n]
        }), even: ht(function (e, t) {
            var n = 0;
            for (; n < t; n += 2) {
                e.push(n)
            }
            return e
        }), odd: ht(function (e, t) {
            var n = 1;
            for (; n < t; n += 2) {
                e.push(n)
            }
            return e
        }), lt: ht(function (e, t, n) {
            var i = n < 0 ? n + t : n;
            for (; --i >= 0;) {
                e.push(i)
            }
            return e
        }), gt: ht(function (e, t, n) {
            var i = n < 0 ? n + t : n;
            for (; ++i < t;) {
                e.push(i)
            }
            return e
        })}};
        o.pseudos["nth"] = o.pseudos["eq"];
        for (n in{radio: true, checkbox: true, file: true, password: true, image: true}) {
            o.pseudos[n] = pt(n)
        }
        for (n in{submit: true, reset: true}) {
            o.pseudos[n] = dt(n)
        }
        function gt() {
        }

        gt.prototype = o.filters = o.pseudos;
        o.setFilters = new gt;
        function mt(e, t) {
            var n, i, r, s, a, u, l, f = k[e + " "];
            if (f) {
                return t ? 0 : f.slice(0)
            }
            a = e;
            u = [];
            l = o.preFilter;
            while (a) {
                if (!n || (i = X.exec(a))) {
                    if (i) {
                        a = a.slice(i[0].length) || a
                    }
                    u.push(r = [])
                }
                n = false;
                if (i = U.exec(a)) {
                    n = i.shift();
                    r.push({value: n, type: i[0].replace(z, " ")});
                    a = a.slice(n.length)
                }
                for (s in o.filter) {
                    if ((i = Q[s].exec(a)) && (!l[s] || (i = l[s](i)))) {
                        n = i.shift();
                        r.push({value: n, type: s, matches: i});
                        a = a.slice(n.length)
                    }
                }
                if (!n) {
                    break
                }
            }
            return t ? a.length : a ? st.error(e) : k(e, u).slice(0)
        }

        function yt(e) {
            var t = 0, n = e.length, i = "";
            for (; t < n; t++) {
                i += e[t].value
            }
            return i
        }

        function vt(e, t, n) {
            var i = t.dir, o = n && i === "parentNode", s = C++;
            return t.first ? function (t, n, r) {
                while (t = t[i]) {
                    if (t.nodeType === 1 || o) {
                        return e(t, n, r)
                    }
                }
            } : function (t, n, a) {
                var u, l, f, c = T + " " + s;
                if (a) {
                    while (t = t[i]) {
                        if (t.nodeType === 1 || o) {
                            if (e(t, n, a)) {
                                return true
                            }
                        }
                    }
                } else {
                    while (t = t[i]) {
                        if (t.nodeType === 1 || o) {
                            f = t[b] || (t[b] = {});
                            if ((l = f[i]) && l[0] === c) {
                                if ((u = l[1]) === true || u === r) {
                                    return u === true
                                }
                            } else {
                                l = f[i] = [c];
                                l[1] = e(t, n, a) || r;
                                if (l[1] === true) {
                                    return true
                                }
                            }
                        }
                    }
                }
            }
        }

        function bt(e) {
            return e.length > 1 ? function (t, n, i) {
                var r = e.length;
                while (r--) {
                    if (!e[r](t, n, i)) {
                        return false
                    }
                }
                return true
            } : e[0]
        }

        function xt(e, t, n, i, r) {
            var o, s = [], a = 0, u = e.length, l = t != null;
            for (; a < u; a++) {
                if (o = e[a]) {
                    if (!n || n(o, i, r)) {
                        s.push(o);
                        if (l) {
                            t.push(a)
                        }
                    }
                }
            }
            return s
        }

        function wt(e, t, n, i, r, o) {
            if (i && !i[b]) {
                i = wt(i)
            }
            if (r && !r[b]) {
                r = wt(r, o)
            }
            return ut(function (o, s, a, u) {
                var l, f, c, p = [], d = [], h = s.length, g = o || Nt(t || "*", a.nodeType ? [a] : a, []), m = e && (o || !t) ? xt(g, p, e, a, u) : g, y = n ? r || (o ? e : h || i) ? [] : s : m;
                if (n) {
                    n(m, y, a, u)
                }
                if (i) {
                    l = xt(y, d);
                    i(l, [], a, u);
                    f = l.length;
                    while (f--) {
                        if (c = l[f]) {
                            y[d[f]] = !(m[d[f]] = c)
                        }
                    }
                }
                if (o) {
                    if (r || e) {
                        if (r) {
                            l = [];
                            f = y.length;
                            while (f--) {
                                if (c = y[f]) {
                                    l.push(m[f] = c)
                                }
                            }
                            r(null, y = [], l, u)
                        }
                        f = y.length;
                        while (f--) {
                            if ((c = y[f]) && (l = r ? F.call(o, c) : p[f]) > -1) {
                                o[l] = !(s[l] = c)
                            }
                        }
                    }
                } else {
                    y = xt(y === s ? y.splice(h, y.length) : y);
                    if (r) {
                        r(null, s, y, u)
                    } else {
                        M.apply(s, y)
                    }
                }
            })
        }

        function Tt(e) {
            var t, n, i, r = e.length, s = o.relative[e[0].type], a = s || o.relative[" "], u = s ? 1 : 0, f = vt(function (e) {
                return e === t
            }, a, true), c = vt(function (e) {
                return F.call(t, e) > -1
            }, a, true), p = [function (e, n, i) {
                return!s && (i || n !== l) || ((t = n).nodeType ? f(e, n, i) : c(e, n, i))
            }];
            for (; u < r; u++) {
                if (n = o.relative[e[u].type]) {
                    p = [vt(bt(p), n)]
                } else {
                    n = o.filter[e[u].type].apply(null, e[u].matches);
                    if (n[b]) {
                        i = ++u;
                        for (; i < r; i++) {
                            if (o.relative[e[i].type]) {
                                break
                            }
                        }
                        return wt(u > 1 && bt(p), u > 1 && yt(e.slice(0, u - 1).concat({value: e[u - 2].type === " " ? "*" : ""})).replace(z, "$1"), n, u < i && Tt(e.slice(u, i)), i < r && Tt(e = e.slice(i)), i < r && yt(e))
                    }
                    p.push(n)
                }
            }
            return bt(p)
        }

        function Ct(e, t) {
            var n = 0, i = t.length > 0, s = e.length > 0, a = function (a, u, f, c, d) {
                var h, g, m, y = [], v = 0, b = "0", x = a && [], w = d != null, C = l, N = a || s && o.find["TAG"]("*", d && u.parentNode || u), k = T += C == null ? 1 : Math.random() || .1;
                if (w) {
                    l = u !== p && u;
                    r = n
                }
                for (; (h = N[b]) != null; b++) {
                    if (s && h) {
                        g = 0;
                        while (m = e[g++]) {
                            if (m(h, u, f)) {
                                c.push(h);
                                break
                            }
                        }
                        if (w) {
                            T = k;
                            r = ++n
                        }
                    }
                    if (i) {
                        if (h = !m && h) {
                            v--
                        }
                        if (a) {
                            x.push(h)
                        }
                    }
                }
                v += b;
                if (i && b !== v) {
                    g = 0;
                    while (m = t[g++]) {
                        m(x, y, u, f)
                    }
                    if (a) {
                        if (v > 0) {
                            while (b--) {
                                if (!(x[b] || y[b])) {
                                    y[b] = q.call(c)
                                }
                            }
                        }
                        y = xt(y)
                    }
                    M.apply(c, y);
                    if (w && !a && y.length > 0 && v + t.length > 1) {
                        st.uniqueSort(c)
                    }
                }
                if (w) {
                    T = k;
                    l = C
                }
                return x
            };
            return i ? ut(a) : a
        }

        u = st.compile = function (e, t) {
            var n, i = [], r = [], o = E[e + " "];
            if (!o) {
                if (!t) {
                    t = mt(e)
                }
                n = t.length;
                while (n--) {
                    o = Tt(t[n]);
                    if (o[b]) {
                        i.push(o)
                    } else {
                        r.push(o)
                    }
                }
                o = E(e, Ct(r, i))
            }
            return o
        };
        function Nt(e, t, n) {
            var i = 0, r = t.length;
            for (; i < r; i++) {
                st(e, t[i], n)
            }
            return n
        }

        function kt(e, t, n, r) {
            var s, a, l, f, c, p = mt(e);
            if (!r) {
                if (p.length === 1) {
                    a = p[0] = p[0].slice(0);
                    if (a.length > 2 && (l = a[0]).type === "ID" && i.getById && t.nodeType === 9 && h && o.relative[a[1].type]) {
                        t = (o.find["ID"](l.matches[0].replace(it, rt), t) || [])[0];
                        if (!t) {
                            return n
                        }
                        e = e.slice(a.shift().value.length)
                    }
                    s = Q["needsContext"].test(e) ? 0 : a.length;
                    while (s--) {
                        l = a[s];
                        if (o.relative[f = l.type]) {
                            break
                        }
                        if (c = o.find[f]) {
                            if (r = c(l.matches[0].replace(it, rt), V.test(a[0].type) && t.parentNode || t)) {
                                a.splice(s, 1);
                                e = r.length && yt(a);
                                if (!e) {
                                    M.apply(n, r);
                                    return n
                                }
                                break
                            }
                        }
                    }
                }
            }
            u(e, p)(r, t, !h, n, V.test(e));
            return n
        }

        i.sortStable = b.split("").sort(A).join("") === b;
        i.detectDuplicates = S;
        c();
        i.sortDetached = lt(function (e) {
            return e.compareDocumentPosition(p.createElement("div")) & 1
        });
        if (!lt(function (e) {
            e.innerHTML = "<a href='#'></a>";
            return e.firstChild.getAttribute("href") === "#"
        })) {
            ft("type|href|height|width", function (e, t, n) {
                if (!n) {
                    return e.getAttribute(t, t.toLowerCase() === "type" ? 1 : 2)
                }
            })
        }
        if (!i.attributes || !lt(function (e) {
            e.innerHTML = "<input/>";
            e.firstChild.setAttribute("value", "");
            return e.firstChild.getAttribute("value") === ""
        })) {
            ft("value", function (e, t, n) {
                if (!n && e.nodeName.toLowerCase() === "input") {
                    return e.defaultValue
                }
            })
        }
        if (!lt(function (e) {
            return e.getAttribute("disabled") == null
        })) {
            ft(B, function (e, t, n) {
                var i;
                if (!n) {
                    return(i = e.getAttributeNode(t)) && i.specified ? i.value : e[t] === true ? t.toLowerCase() : null
                }
            })
        }
        x.find = st;
        x.expr = st.selectors;
        x.expr[":"] = x.expr.pseudos;
        x.unique = st.uniqueSort;
        x.text = st.getText;
        x.isXMLDoc = st.isXML;
        x.contains = st.contains
    }(e);
    var O = {};

    function F(e) {
        var t = O[e] = {};
        x.each(e.match(T) || [], function (e, n) {
            t[n] = true
        });
        return t
    }

    x.Callbacks = function (e) {
        e = typeof e === "string" ? O[e] || F(e) : x.extend({}, e);
        var n, i, r, o, s, a, u = [], l = !e.once && [], f = function (t) {
            i = e.memory && t;
            r = true;
            s = a || 0;
            a = 0;
            o = u.length;
            n = true;
            for (; u && s < o; s++) {
                if (u[s].apply(t[0], t[1]) === false && e.stopOnFalse) {
                    i = false;
                    break
                }
            }
            n = false;
            if (u) {
                if (l) {
                    if (l.length) {
                        f(l.shift())
                    }
                } else if (i) {
                    u = []
                } else {
                    c.disable()
                }
            }
        }, c = {add: function () {
            if (u) {
                var t = u.length;
                !function r(t) {
                    x.each(t, function (t, n) {
                        var i = x.type(n);
                        if (i === "function") {
                            if (!e.unique || !c.has(n)) {
                                u.push(n)
                            }
                        } else if (n && n.length && i !== "string") {
                            r(n)
                        }
                    })
                }(arguments);
                if (n) {
                    o = u.length
                } else if (i) {
                    a = t;
                    f(i)
                }
            }
            return this
        }, remove: function () {
            if (u) {
                x.each(arguments, function (e, t) {
                    var i;
                    while ((i = x.inArray(t, u, i)) > -1) {
                        u.splice(i, 1);
                        if (n) {
                            if (i <= o) {
                                o--
                            }
                            if (i <= s) {
                                s--
                            }
                        }
                    }
                })
            }
            return this
        }, has: function (e) {
            return e ? x.inArray(e, u) > -1 : !!(u && u.length)
        }, empty: function () {
            u = [];
            o = 0;
            return this
        }, disable: function () {
            u = l = i = t;
            return this
        }, disabled: function () {
            return!u
        }, lock: function () {
            l = t;
            if (!i) {
                c.disable()
            }
            return this
        }, locked: function () {
            return!l
        }, fireWith: function (e, t) {
            if (u && (!r || l)) {
                t = t || [];
                t = [e, t.slice ? t.slice() : t];
                if (n) {
                    l.push(t)
                } else {
                    f(t)
                }
            }
            return this
        }, fire: function () {
            c.fireWith(this, arguments);
            return this
        }, fired: function () {
            return!!r
        }};
        return c
    };
    x.extend({Deferred: function (e) {
        var t = [
            ["resolve", "done", x.Callbacks("once memory"), "resolved"],
            ["reject", "fail", x.Callbacks("once memory"), "rejected"],
            ["notify", "progress", x.Callbacks("memory")]
        ], n = "pending", i = {state: function () {
            return n
        }, always: function () {
            r.done(arguments).fail(arguments);
            return this
        }, then: function () {
            var e = arguments;
            return x.Deferred(function (n) {
                x.each(t, function (t, o) {
                    var s = o[0], a = x.isFunction(e[t]) && e[t];
                    r[o[1]](function () {
                        var e = a && a.apply(this, arguments);
                        if (e && x.isFunction(e.promise)) {
                            e.promise().done(n.resolve).fail(n.reject).progress(n.notify)
                        } else {
                            n[s + "With"](this === i ? n.promise() : this, a ? [e] : arguments)
                        }
                    })
                });
                e = null
            }).promise()
        }, promise: function (e) {
            return e != null ? x.extend(e, i) : i
        }}, r = {};
        i.pipe = i.then;
        x.each(t, function (e, o) {
            var s = o[2], a = o[3];
            i[o[1]] = s.add;
            if (a) {
                s.add(function () {
                    n = a
                }, t[e ^ 1][2].disable, t[2][2].lock)
            }
            r[o[0]] = function () {
                r[o[0] + "With"](this === r ? i : this, arguments);
                return this
            };
            r[o[0] + "With"] = s.fireWith
        });
        i.promise(r);
        if (e) {
            e.call(r, r)
        }
        return r
    }, when: function (e) {
        var t = 0, n = g.call(arguments), i = n.length, r = i !== 1 || e && x.isFunction(e.promise) ? i : 0, o = r === 1 ? e : x.Deferred(), s = function (e, t, n) {
            return function (i) {
                t[e] = this;
                n[e] = arguments.length > 1 ? g.call(arguments) : i;
                if (n === a) {
                    o.notifyWith(t, n)
                } else if (!--r) {
                    o.resolveWith(t, n)
                }
            }
        }, a, u, l;
        if (i > 1) {
            a = new Array(i);
            u = new Array(i);
            l = new Array(i);
            for (; t < i; t++) {
                if (n[t] && x.isFunction(n[t].promise)) {
                    n[t].promise().done(s(t, l, n)).fail(o.reject).progress(s(t, u, a))
                } else {
                    --r
                }
            }
        }
        if (!r) {
            o.resolveWith(l, n)
        }
        return o.promise()
    }});
    x.support = function (t) {
        var n, i, o, a, u, l, f, c, p, d = s.createElement("div");
        d.setAttribute("className", "t");
        d.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
        n = d.getElementsByTagName("*") || [];
        i = d.getElementsByTagName("a")[0];
        if (!i || !i.style || !n.length) {
            return t
        }
        a = s.createElement("select");
        l = a.appendChild(s.createElement("option"));
        o = d.getElementsByTagName("input")[0];
        i.style.cssText = "top:1px;float:left;opacity:.5";
        t.getSetAttribute = d.className !== "t";
        t.leadingWhitespace = d.firstChild.nodeType === 3;
        t.tbody = !d.getElementsByTagName("tbody").length;
        t.htmlSerialize = !!d.getElementsByTagName("link").length;
        t.style = /top/.test(i.getAttribute("style"));
        t.hrefNormalized = i.getAttribute("href") === "/a";
        t.opacity = /^0.5/.test(i.style.opacity);
        t.cssFloat = !!i.style.cssFloat;
        t.checkOn = !!o.value;
        t.optSelected = l.selected;
        t.enctype = !!s.createElement("form").enctype;
        t.html5Clone = s.createElement("nav").cloneNode(true).outerHTML !== "<:nav></:nav>";
        t.inlineBlockNeedsLayout = false;
        t.shrinkWrapBlocks = false;
        t.pixelPosition = false;
        t.deleteExpando = true;
        t.noCloneEvent = true;
        t.reliableMarginRight = true;
        t.boxSizingReliable = true;
        o.checked = true;
        t.noCloneChecked = o.cloneNode(true).checked;
        a.disabled = true;
        t.optDisabled = !l.disabled;
        try {
            delete d.test
        } catch (h) {
            t.deleteExpando = false
        }
        o = s.createElement("input");
        o.setAttribute("value", "");
        t.input = o.getAttribute("value") === "";
        o.value = "t";
        o.setAttribute("type", "radio");
        t.radioValue = o.value === "t";
        o.setAttribute("checked", "t");
        o.setAttribute("name", "t");
        u = s.createDocumentFragment();
        u.appendChild(o);
        t.appendChecked = o.checked;
        t.checkClone = u.cloneNode(true).cloneNode(true).lastChild.checked;
        if (d.attachEvent) {
            d.attachEvent("onclick", function () {
                t.noCloneEvent = false
            });
            d.cloneNode(true).click()
        }
        for (p in{submit: true, change: true, focusin: true}) {
            d.setAttribute(f = "on" + p, "t");
            t[p + "Bubbles"] = f in e || d.attributes[f].expando === false
        }
        d.style.backgroundClip = "content-box";
        d.cloneNode(true).style.backgroundClip = "";
        t.clearCloneStyle = d.style.backgroundClip === "content-box";
        for (p in x(t)) {
            break
        }
        t.ownLast = p !== "0";
        x(function () {
            var n, i, o, a = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", u = s.getElementsByTagName("body")[0];
            if (!u) {
                return
            }
            n = s.createElement("div");
            n.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
            u.appendChild(n).appendChild(d);
            d.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
            o = d.getElementsByTagName("td");
            o[0].style.cssText = "padding:0;margin:0;border:0;display:none";
            c = o[0].offsetHeight === 0;
            o[0].style.display = "";
            o[1].style.display = "none";
            t.reliableHiddenOffsets = c && o[0].offsetHeight === 0;
            d.innerHTML = "";
            d.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
            x.swap(u, u.style.zoom != null ? {zoom: 1} : {}, function () {
                t.boxSizing = d.offsetWidth === 4
            });
            if (e.getComputedStyle) {
                t.pixelPosition = (e.getComputedStyle(d, null) || {}).top !== "1%";
                t.boxSizingReliable = (e.getComputedStyle(d, null) || {width: "4px"}).width === "4px";
                i = d.appendChild(s.createElement("div"));
                i.style.cssText = d.style.cssText = a;
                i.style.marginRight = i.style.width = "0";
                d.style.width = "1px";
                t.reliableMarginRight = !parseFloat((e.getComputedStyle(i, null) || {}).marginRight)
            }
            if (typeof d.style.zoom !== r) {
                d.innerHTML = "";
                d.style.cssText = a + "width:1px;padding:1px;display:inline;zoom:1";
                t.inlineBlockNeedsLayout = d.offsetWidth === 3;
                d.style.display = "block";
                d.innerHTML = "<div></div>";
                d.firstChild.style.width = "5px";
                t.shrinkWrapBlocks = d.offsetWidth !== 3;
                if (t.inlineBlockNeedsLayout) {
                    u.style.zoom = 1
                }
            }
            u.removeChild(n);
            n = d = o = i = null
        });
        n = a = u = l = i = o = null;
        return t
    }({});
    var B = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, P = /([A-Z])/g;

    function R(e, n, i, r) {
        if (!x.acceptData(e)) {
            return
        }
        var o, s, a = x.expando, u = e.nodeType, l = u ? x.cache : e, f = u ? e[a] : e[a] && a;
        if ((!f || !l[f] || !r && !l[f].data) && i === t && typeof n === "string") {
            return
        }
        if (!f) {
            if (u) {
                f = e[a] = c.pop() || x.guid++
            } else {
                f = a
            }
        }
        if (!l[f]) {
            l[f] = u ? {} : {toJSON: x.noop}
        }
        if (typeof n === "object" || typeof n === "function") {
            if (r) {
                l[f] = x.extend(l[f], n)
            } else {
                l[f].data = x.extend(l[f].data, n)
            }
        }
        s = l[f];
        if (!r) {
            if (!s.data) {
                s.data = {}
            }
            s = s.data
        }
        if (i !== t) {
            s[x.camelCase(n)] = i
        }
        if (typeof n === "string") {
            o = s[n];
            if (o == null) {
                o = s[x.camelCase(n)]
            }
        } else {
            o = s
        }
        return o
    }

    function W(e, t, n) {
        if (!x.acceptData(e)) {
            return
        }
        var i, r, o = e.nodeType, s = o ? x.cache : e, a = o ? e[x.expando] : x.expando;
        if (!s[a]) {
            return
        }
        if (t) {
            i = n ? s[a] : s[a].data;
            if (i) {
                if (!x.isArray(t)) {
                    if (t in i) {
                        t = [t]
                    } else {
                        t = x.camelCase(t);
                        if (t in i) {
                            t = [t]
                        } else {
                            t = t.split(" ")
                        }
                    }
                } else {
                    t = t.concat(x.map(t, x.camelCase))
                }
                r = t.length;
                while (r--) {
                    delete i[t[r]]
                }
                if (n ? !I(i) : !x.isEmptyObject(i)) {
                    return
                }
            }
        }
        if (!n) {
            delete s[a].data;
            if (!I(s[a])) {
                return
            }
        }
        if (o) {
            x.cleanData([e], true)
        } else if (x.support.deleteExpando || s != s.window) {
            delete s[a]
        } else {
            s[a] = null
        }
    }

    x.extend({cache: {}, noData: {applet: true, embed: true, object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"}, hasData: function (e) {
        e = e.nodeType ? x.cache[e[x.expando]] : e[x.expando];
        return!!e && !I(e)
    }, data: function (e, t, n) {
        return R(e, t, n)
    }, removeData: function (e, t) {
        return W(e, t)
    }, _data: function (e, t, n) {
        return R(e, t, n, true)
    }, _removeData: function (e, t) {
        return W(e, t, true)
    }, acceptData: function (e) {
        if (e.nodeType && e.nodeType !== 1 && e.nodeType !== 9) {
            return false
        }
        var t = e.nodeName && x.noData[e.nodeName.toLowerCase()];
        return!t || t !== true && e.getAttribute("classid") === t
    }});
    x.fn.extend({data: function (e, n) {
        var i, r, o = null, s = 0, a = this[0];
        if (e === t) {
            if (this.length) {
                o = x.data(a);
                if (a.nodeType === 1 && !x._data(a, "parsedAttrs")) {
                    i = a.attributes;
                    for (; s < i.length; s++) {
                        r = i[s].name;
                        if (r.indexOf("data-") === 0) {
                            r = x.camelCase(r.slice(5));
                            $(a, r, o[r])
                        }
                    }
                    x._data(a, "parsedAttrs", true)
                }
            }
            return o
        }
        if (typeof e === "object") {
            return this.each(function () {
                x.data(this, e)
            })
        }
        return arguments.length > 1 ? this.each(function () {
            x.data(this, e, n)
        }) : a ? $(a, e, x.data(a, e)) : null
    }, removeData: function (e) {
        return this.each(function () {
            x.removeData(this, e)
        })
    }});
    function $(e, n, i) {
        if (i === t && e.nodeType === 1) {
            var r = "data-" + n.replace(P, "-$1").toLowerCase();
            i = e.getAttribute(r);
            if (typeof i === "string") {
                try {
                    i = i === "true" ? true : i === "false" ? false : i === "null" ? null : +i + "" === i ? +i : B.test(i) ? x.parseJSON(i) : i
                } catch (o) {
                }
                x.data(e, n, i)
            } else {
                i = t
            }
        }
        return i
    }

    function I(e) {
        var t;
        for (t in e) {
            if (t === "data" && x.isEmptyObject(e[t])) {
                continue
            }
            if (t !== "toJSON") {
                return false
            }
        }
        return true
    }

    x.extend({queue: function (e, t, n) {
        var i;
        if (e) {
            t = (t || "fx") + "queue";
            i = x._data(e, t);
            if (n) {
                if (!i || x.isArray(n)) {
                    i = x._data(e, t, x.makeArray(n))
                } else {
                    i.push(n)
                }
            }
            return i || []
        }
    }, dequeue: function (e, t) {
        t = t || "fx";
        var n = x.queue(e, t), i = n.length, r = n.shift(), o = x._queueHooks(e, t), s = function () {
            x.dequeue(e, t)
        };
        if (r === "inprogress") {
            r = n.shift();
            i--
        }
        if (r) {
            if (t === "fx") {
                n.unshift("inprogress")
            }
            delete o.stop;
            r.call(e, s, o)
        }
        if (!i && o) {
            o.empty.fire()
        }
    }, _queueHooks: function (e, t) {
        var n = t + "queueHooks";
        return x._data(e, n) || x._data(e, n, {empty: x.Callbacks("once memory").add(function () {
            x._removeData(e, t + "queue");
            x._removeData(e, n)
        })})
    }});
    x.fn.extend({queue: function (e, n) {
        var i = 2;
        if (typeof e !== "string") {
            n = e;
            e = "fx";
            i--
        }
        if (arguments.length < i) {
            return x.queue(this[0], e)
        }
        return n === t ? this : this.each(function () {
            var t = x.queue(this, e, n);
            x._queueHooks(this, e);
            if (e === "fx" && t[0] !== "inprogress") {
                x.dequeue(this, e)
            }
        })
    }, dequeue: function (e) {
        return this.each(function () {
            x.dequeue(this, e)
        })
    }, delay: function (e, t) {
        e = x.fx ? x.fx.speeds[e] || e : e;
        t = t || "fx";
        return this.queue(t, function (t, n) {
            var i = setTimeout(t, e);
            n.stop = function () {
                clearTimeout(i)
            }
        })
    }, clearQueue: function (e) {
        return this.queue(e || "fx", [])
    }, promise: function (e, n) {
        var i, r = 1, o = x.Deferred(), s = this, a = this.length, u = function () {
            if (!--r) {
                o.resolveWith(s, [s])
            }
        };
        if (typeof e !== "string") {
            n = e;
            e = t
        }
        e = e || "fx";
        while (a--) {
            i = x._data(s[a], e + "queueHooks");
            if (i && i.empty) {
                r++;
                i.empty.add(u)
            }
        }
        u();
        return o.promise(n)
    }});
    var z, X, U = /[\t\r\n\f]/g, V = /\r/g, Y = /^(?:input|select|textarea|button|object)$/i, J = /^(?:a|area)$/i, G = /^(?:checked|selected)$/i, Q = x.support.getSetAttribute, K = x.support.input;
    x.fn.extend({attr: function (e, t) {
        return x.access(this, x.attr, e, t, arguments.length > 1)
    }, removeAttr: function (e) {
        return this.each(function () {
            x.removeAttr(this, e)
        })
    }, prop: function (e, t) {
        return x.access(this, x.prop, e, t, arguments.length > 1)
    }, removeProp: function (e) {
        e = x.propFix[e] || e;
        return this.each(function () {
            try {
                this[e] = t;
                delete this[e]
            } catch (n) {
            }
        })
    }, addClass: function (e) {
        var t, n, i, r, o, s = 0, a = this.length, u = typeof e === "string" && e;
        if (x.isFunction(e)) {
            return this.each(function (t) {
                x(this).addClass(e.call(this, t, this.className))
            })
        }
        if (u) {
            t = (e || "").match(T) || [];
            for (; s < a; s++) {
                n = this[s];
                i = n.nodeType === 1 && (n.className ? (" " + n.className + " ").replace(U, " ") : " ");
                if (i) {
                    o = 0;
                    while (r = t[o++]) {
                        if (i.indexOf(" " + r + " ") < 0) {
                            i += r + " "
                        }
                    }
                    n.className = x.trim(i)
                }
            }
        }
        return this
    }, removeClass: function (e) {
        var t, n, i, r, o, s = 0, a = this.length, u = arguments.length === 0 || typeof e === "string" && e;
        if (x.isFunction(e)) {
            return this.each(function (t) {
                x(this).removeClass(e.call(this, t, this.className))
            })
        }
        if (u) {
            t = (e || "").match(T) || [];
            for (; s < a; s++) {
                n = this[s];
                i = n.nodeType === 1 && (n.className ? (" " + n.className + " ").replace(U, " ") : "");
                if (i) {
                    o = 0;
                    while (r = t[o++]) {
                        while (i.indexOf(" " + r + " ") >= 0) {
                            i = i.replace(" " + r + " ", " ")
                        }
                    }
                    n.className = e ? x.trim(i) : ""
                }
            }
        }
        return this
    }, toggleClass: function (e, t) {
        var n = typeof e;
        if (typeof t === "boolean" && n === "string") {
            return t ? this.addClass(e) : this.removeClass(e)
        }
        if (x.isFunction(e)) {
            return this.each(function (n) {
                x(this).toggleClass(e.call(this, n, this.className, t), t)
            })
        }
        return this.each(function () {
            if (n === "string") {
                var t, i = 0, o = x(this), s = e.match(T) || [];
                while (t = s[i++]) {
                    if (o.hasClass(t)) {
                        o.removeClass(t)
                    } else {
                        o.addClass(t)
                    }
                }
            } else if (n === r || n === "boolean") {
                if (this.className) {
                    x._data(this, "__className__", this.className)
                }
                this.className = this.className || e === false ? "" : x._data(this, "__className__") || ""
            }
        })
    }, hasClass: function (e) {
        var t = " " + e + " ", n = 0, i = this.length;
        for (; n < i; n++) {
            if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(U, " ").indexOf(t) >= 0) {
                return true
            }
        }
        return false
    }, val: function (e) {
        var n, i, r, o = this[0];
        if (!arguments.length) {
            if (o) {
                i = x.valHooks[o.type] || x.valHooks[o.nodeName.toLowerCase()];
                if (i && "get"in i && (n = i.get(o, "value")) !== t) {
                    return n
                }
                n = o.value;
                return typeof n === "string" ? n.replace(V, "") : n == null ? "" : n
            }
            return
        }
        r = x.isFunction(e);
        return this.each(function (n) {
            var o;
            if (this.nodeType !== 1) {
                return
            }
            if (r) {
                o = e.call(this, n, x(this).val())
            } else {
                o = e
            }
            if (o == null) {
                o = ""
            } else if (typeof o === "number") {
                o += ""
            } else if (x.isArray(o)) {
                o = x.map(o, function (e) {
                    return e == null ? "" : e + ""
                })
            }
            i = x.valHooks[this.type] || x.valHooks[this.nodeName.toLowerCase()];
            if (!i || !("set"in i) || i.set(this, o, "value") === t) {
                this.value = o
            }
        })
    }});
    x.extend({valHooks: {option: {get: function (e) {
        var t = x.find.attr(e, "value");
        return t != null ? t : e.text
    }}, select: {get: function (e) {
        var t, n, i = e.options, r = e.selectedIndex, o = e.type === "select-one" || r < 0, s = o ? null : [], a = o ? r + 1 : i.length, u = r < 0 ? a : o ? r : 0;
        for (; u < a; u++) {
            n = i[u];
            if ((n.selected || u === r) && (x.support.optDisabled ? !n.disabled : n.getAttribute("disabled") === null) && (!n.parentNode.disabled || !x.nodeName(n.parentNode, "optgroup"))) {
                t = x(n).val();
                if (o) {
                    return t
                }
                s.push(t)
            }
        }
        return s
    }, set: function (e, t) {
        var n, i, r = e.options, o = x.makeArray(t), s = r.length;
        while (s--) {
            i = r[s];
            if (i.selected = x.inArray(x(i).val(), o) >= 0) {
                n = true
            }
        }
        if (!n) {
            e.selectedIndex = -1
        }
        return o
    }}}, attr: function (e, n, i) {
        var o, s, a = e.nodeType;
        if (!e || a === 3 || a === 8 || a === 2) {
            return
        }
        if (typeof e.getAttribute === r) {
            return x.prop(e, n, i)
        }
        if (a !== 1 || !x.isXMLDoc(e)) {
            n = n.toLowerCase();
            o = x.attrHooks[n] || (x.expr.match.bool.test(n) ? X : z)
        }
        if (i !== t) {
            if (i === null) {
                x.removeAttr(e, n)
            } else if (o && "set"in o && (s = o.set(e, i, n)) !== t) {
                return s
            } else {
                e.setAttribute(n, i + "");
                return i
            }
        } else if (o && "get"in o && (s = o.get(e, n)) !== null) {
            return s
        } else {
            s = x.find.attr(e, n);
            return s == null ? t : s
        }
    }, removeAttr: function (e, t) {
        var n, i, r = 0, o = t && t.match(T);
        if (o && e.nodeType === 1) {
            while (n = o[r++]) {
                i = x.propFix[n] || n;
                if (x.expr.match.bool.test(n)) {
                    if (K && Q || !G.test(n)) {
                        e[i] = false
                    } else {
                        e[x.camelCase("default-" + n)] = e[i] = false
                    }
                } else {
                    x.attr(e, n, "")
                }
                e.removeAttribute(Q ? n : i)
            }
        }
    }, attrHooks: {type: {set: function (e, t) {
        if (!x.support.radioValue && t === "radio" && x.nodeName(e, "input")) {
            var n = e.value;
            e.setAttribute("type", t);
            if (n) {
                e.value = n
            }
            return t
        }
    }}}, propFix: {"for": "htmlFor", "class": "className"}, prop: function (e, n, i) {
        var r, o, s, a = e.nodeType;
        if (!e || a === 3 || a === 8 || a === 2) {
            return
        }
        s = a !== 1 || !x.isXMLDoc(e);
        if (s) {
            n = x.propFix[n] || n;
            o = x.propHooks[n]
        }
        if (i !== t) {
            return o && "set"in o && (r = o.set(e, i, n)) !== t ? r : e[n] = i
        } else {
            return o && "get"in o && (r = o.get(e, n)) !== null ? r : e[n]
        }
    }, propHooks: {tabIndex: {get: function (e) {
        var t = x.find.attr(e, "tabindex");
        return t ? parseInt(t, 10) : Y.test(e.nodeName) || J.test(e.nodeName) && e.href ? 0 : -1
    }}}});
    X = {set: function (e, t, n) {
        if (t === false) {
            x.removeAttr(e, n)
        } else if (K && Q || !G.test(n)) {
            e.setAttribute(!Q && x.propFix[n] || n, n)
        } else {
            e[x.camelCase("default-" + n)] = e[n] = true
        }
        return n
    }};
    x.each(x.expr.match.bool.source.match(/\w+/g), function (e, n) {
        var i = x.expr.attrHandle[n] || x.find.attr;
        x.expr.attrHandle[n] = K && Q || !G.test(n) ? function (e, n, r) {
            var o = x.expr.attrHandle[n], s = r ? t : (x.expr.attrHandle[n] = t) != i(e, n, r) ? n.toLowerCase() : null;
            x.expr.attrHandle[n] = o;
            return s
        } : function (e, n, i) {
            return i ? t : e[x.camelCase("default-" + n)] ? n.toLowerCase() : null
        }
    });
    if (!K || !Q) {
        x.attrHooks.value = {set: function (e, t, n) {
            if (x.nodeName(e, "input")) {
                e.defaultValue = t
            } else {
                return z && z.set(e, t, n)
            }
        }}
    }
    if (!Q) {
        z = {set: function (e, n, i) {
            var r = e.getAttributeNode(i);
            if (!r) {
                e.setAttributeNode(r = e.ownerDocument.createAttribute(i))
            }
            r.value = n += "";
            return i === "value" || n === e.getAttribute(i) ? n : t
        }};
        x.expr.attrHandle.id = x.expr.attrHandle.name = x.expr.attrHandle.coords = function (e, n, i) {
            var r;
            return i ? t : (r = e.getAttributeNode(n)) && r.value !== "" ? r.value : null
        };
        x.valHooks.button = {get: function (e, n) {
            var i = e.getAttributeNode(n);
            return i && i.specified ? i.value : t
        }, set: z.set};
        x.attrHooks.contenteditable = {set: function (e, t, n) {
            z.set(e, t === "" ? false : t, n)
        }};
        x.each(["width", "height"], function (e, t) {
            x.attrHooks[t] = {set: function (e, n) {
                if (n === "") {
                    e.setAttribute(t, "auto");
                    return n
                }
            }}
        })
    }
    if (!x.support.hrefNormalized) {
        x.each(["href", "src"], function (e, t) {
            x.propHooks[t] = {get: function (e) {
                return e.getAttribute(t, 4)
            }}
        })
    }
    if (!x.support.style) {
        x.attrHooks.style = {get: function (e) {
            return e.style.cssText || t
        }, set: function (e, t) {
            return e.style.cssText = t + ""
        }}
    }
    if (!x.support.optSelected) {
        x.propHooks.selected = {get: function (e) {
            var t = e.parentNode;
            if (t) {
                t.selectedIndex;
                if (t.parentNode) {
                    t.parentNode.selectedIndex
                }
            }
            return null
        }}
    }
    x.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
        x.propFix[this.toLowerCase()] = this
    });
    if (!x.support.enctype) {
        x.propFix.enctype = "encoding"
    }
    x.each(["radio", "checkbox"], function () {
        x.valHooks[this] = {set: function (e, t) {
            if (x.isArray(t)) {
                return e.checked = x.inArray(x(e).val(), t) >= 0
            }
        }};
        if (!x.support.checkOn) {
            x.valHooks[this].get = function (e) {
                return e.getAttribute("value") === null ? "on" : e.value
            }
        }
    });
    var Z = /^(?:input|select|textarea)$/i, et = /^key/, tt = /^(?:mouse|contextmenu)|click/, nt = /^(?:focusinfocus|focusoutblur)$/, it = /^([^.]*)(?:\.(.+)|)$/;

    function rt() {
        return true
    }

    function ot() {
        return false
    }

    function st() {
        try {
            return s.activeElement
        } catch (e) {
        }
    }

    x.event = {global: {}, add: function (e, n, i, o, s) {
        var a, u, l, f, c, p, d, h, g, m, y, v = x._data(e);
        if (!v) {
            return
        }
        if (i.handler) {
            f = i;
            i = f.handler;
            s = f.selector
        }
        if (!i.guid) {
            i.guid = x.guid++
        }
        if (!(u = v.events)) {
            u = v.events = {}
        }
        if (!(p = v.handle)) {
            p = v.handle = function (e) {
                return typeof x !== r && (!e || x.event.triggered !== e.type) ? x.event.dispatch.apply(p.elem, arguments) : t
            };
            p.elem = e
        }
        n = (n || "").match(T) || [""];
        l = n.length;
        while (l--) {
            a = it.exec(n[l]) || [];
            g = y = a[1];
            m = (a[2] || "").split(".").sort();
            if (!g) {
                continue
            }
            c = x.event.special[g] || {};
            g = (s ? c.delegateType : c.bindType) || g;
            c = x.event.special[g] || {};
            d = x.extend({type: g, origType: y, data: o, handler: i, guid: i.guid, selector: s, needsContext: s && x.expr.match.needsContext.test(s), namespace: m.join(".")}, f);
            if (!(h = u[g])) {
                h = u[g] = [];
                h.delegateCount = 0;
                if (!c.setup || c.setup.call(e, o, m, p) === false) {
                    if (e.addEventListener) {
                        e.addEventListener(g, p, false)
                    } else if (e.attachEvent) {
                        e.attachEvent("on" + g, p)
                    }
                }
            }
            if (c.add) {
                c.add.call(e, d);
                if (!d.handler.guid) {
                    d.handler.guid = i.guid
                }
            }
            if (s) {
                h.splice(h.delegateCount++, 0, d)
            } else {
                h.push(d)
            }
            x.event.global[g] = true
        }
        e = null
    }, remove: function (e, t, n, i, r) {
        var o, s, a, u, l, f, c, p, d, h, g, m = x.hasData(e) && x._data(e);
        if (!m || !(f = m.events)) {
            return
        }
        t = (t || "").match(T) || [""];
        l = t.length;
        while (l--) {
            a = it.exec(t[l]) || [];
            d = g = a[1];
            h = (a[2] || "").split(".").sort();
            if (!d) {
                for (d in f) {
                    x.event.remove(e, d + t[l], n, i, true)
                }
                continue
            }
            c = x.event.special[d] || {};
            d = (i ? c.delegateType : c.bindType) || d;
            p = f[d] || [];
            a = a[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)");
            u = o = p.length;
            while (o--) {
                s = p[o];
                if ((r || g === s.origType) && (!n || n.guid === s.guid) && (!a || a.test(s.namespace)) && (!i || i === s.selector || i === "**" && s.selector)) {
                    p.splice(o, 1);
                    if (s.selector) {
                        p.delegateCount--
                    }
                    if (c.remove) {
                        c.remove.call(e, s)
                    }
                }
            }
            if (u && !p.length) {
                if (!c.teardown || c.teardown.call(e, h, m.handle) === false) {
                    x.removeEvent(e, d, m.handle)
                }
                delete f[d]
            }
        }
        if (x.isEmptyObject(f)) {
            delete m.handle;
            x._removeData(e, "events")
        }
    }, trigger: function (n, i, r, o) {
        var a, u, l, f, c, p, d, h = [r || s], g = v.call(n, "type") ? n.type : n, m = v.call(n, "namespace") ? n.namespace.split(".") : [];
        l = p = r = r || s;
        if (r.nodeType === 3 || r.nodeType === 8) {
            return
        }
        if (nt.test(g + x.event.triggered)) {
            return
        }
        if (g.indexOf(".") >= 0) {
            m = g.split(".");
            g = m.shift();
            m.sort()
        }
        u = g.indexOf(":") < 0 && "on" + g;
        n = n[x.expando] ? n : new x.Event(g, typeof n === "object" && n);
        n.isTrigger = o ? 2 : 3;
        n.namespace = m.join(".");
        n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + m.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
        n.result = t;
        if (!n.target) {
            n.target = r
        }
        i = i == null ? [n] : x.makeArray(i, [n]);
        c = x.event.special[g] || {};
        if (!o && c.trigger && c.trigger.apply(r, i) === false) {
            return
        }
        if (!o && !c.noBubble && !x.isWindow(r)) {
            f = c.delegateType || g;
            if (!nt.test(f + g)) {
                l = l.parentNode
            }
            for (; l; l = l.parentNode) {
                h.push(l);
                p = l
            }
            if (p === (r.ownerDocument || s)) {
                h.push(p.defaultView || p.parentWindow || e)
            }
        }
        d = 0;
        while ((l = h[d++]) && !n.isPropagationStopped()) {
            n.type = d > 1 ? f : c.bindType || g;
            a = (x._data(l, "events") || {})[n.type] && x._data(l, "handle");
            if (a) {
                a.apply(l, i)
            }
            a = u && l[u];
            if (a && x.acceptData(l) && a.apply && a.apply(l, i) === false) {
                n.preventDefault()
            }
        }
        n.type = g;
        if (!o && !n.isDefaultPrevented()) {
            if ((!c._default || c._default.apply(h.pop(), i) === false) && x.acceptData(r)) {
                if (u && r[g] && !x.isWindow(r)) {
                    p = r[u];
                    if (p) {
                        r[u] = null
                    }
                    x.event.triggered = g;
                    try {
                        r[g]()
                    } catch (y) {
                    }
                    x.event.triggered = t;
                    if (p) {
                        r[u] = p
                    }
                }
            }
        }
        return n.result
    }, dispatch: function (e) {
        e = x.event.fix(e);
        var n, i, r, o, s, a = [], u = g.call(arguments), l = (x._data(this, "events") || {})[e.type] || [], f = x.event.special[e.type] || {};
        u[0] = e;
        e.delegateTarget = this;
        if (f.preDispatch && f.preDispatch.call(this, e) === false) {
            return
        }
        a = x.event.handlers.call(this, e, l);
        n = 0;
        while ((o = a[n++]) && !e.isPropagationStopped()) {
            e.currentTarget = o.elem;
            s = 0;
            while ((r = o.handlers[s++]) && !e.isImmediatePropagationStopped()) {
                if (!e.namespace_re || e.namespace_re.test(r.namespace)) {
                    e.handleObj = r;
                    e.data = r.data;
                    i = ((x.event.special[r.origType] || {}).handle || r.handler).apply(o.elem, u);
                    if (i !== t) {
                        if ((e.result = i) === false) {
                            e.preventDefault();
                            e.stopPropagation()
                        }
                    }
                }
            }
        }
        if (f.postDispatch) {
            f.postDispatch.call(this, e)
        }
        return e.result
    }, handlers: function (e, n) {
        var i, r, o, s, a = [], u = n.delegateCount, l = e.target;
        if (u && l.nodeType && (!e.button || e.type !== "click")) {
            for (; l != this; l = l.parentNode || this) {
                if (l.nodeType === 1 && (l.disabled !== true || e.type !== "click")) {
                    o = [];
                    for (s = 0; s < u; s++) {
                        r = n[s];
                        i = r.selector + " ";
                        if (o[i] === t) {
                            o[i] = r.needsContext ? x(i, this).index(l) >= 0 : x.find(i, this, null, [l]).length
                        }
                        if (o[i]) {
                            o.push(r)
                        }
                    }
                    if (o.length) {
                        a.push({elem: l, handlers: o})
                    }
                }
            }
        }
        if (u < n.length) {
            a.push({elem: this, handlers: n.slice(u)})
        }
        return a
    }, fix: function (e) {
        if (e[x.expando]) {
            return e
        }
        var t, n, i, r = e.type, o = e, a = this.fixHooks[r];
        if (!a) {
            this.fixHooks[r] = a = tt.test(r) ? this.mouseHooks : et.test(r) ? this.keyHooks : {}
        }
        i = a.props ? this.props.concat(a.props) : this.props;
        e = new x.Event(o);
        t = i.length;
        while (t--) {
            n = i[t];
            e[n] = o[n]
        }
        if (!e.target) {
            e.target = o.srcElement || s
        }
        if (e.target.nodeType === 3) {
            e.target = e.target.parentNode
        }
        e.metaKey = !!e.metaKey;
        return a.filter ? a.filter(e, o) : e
    }, props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), fixHooks: {}, keyHooks: {props: "char charCode key keyCode".split(" "), filter: function (e, t) {
        if (e.which == null) {
            e.which = t.charCode != null ? t.charCode : t.keyCode
        }
        return e
    }}, mouseHooks: {props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), filter: function (e, n) {
        var i, r, o, a = n.button, u = n.fromElement;
        if (e.pageX == null && n.clientX != null) {
            r = e.target.ownerDocument || s;
            o = r.documentElement;
            i = r.body;
            e.pageX = n.clientX + (o && o.scrollLeft || i && i.scrollLeft || 0) - (o && o.clientLeft || i && i.clientLeft || 0);
            e.pageY = n.clientY + (o && o.scrollTop || i && i.scrollTop || 0) - (o && o.clientTop || i && i.clientTop || 0)
        }
        if (!e.relatedTarget && u) {
            e.relatedTarget = u === e.target ? n.toElement : u
        }
        if (!e.which && a !== t) {
            e.which = a & 1 ? 1 : a & 2 ? 3 : a & 4 ? 2 : 0
        }
        return e
    }}, special: {load: {noBubble: true}, focus: {trigger: function () {
        if (this !== st() && this.focus) {
            try {
                this.focus();
                return false
            } catch (e) {
            }
        }
    }, delegateType: "focusin"}, blur: {trigger: function () {
        if (this === st() && this.blur) {
            this.blur();
            return false
        }
    }, delegateType: "focusout"}, click: {trigger: function () {
        if (x.nodeName(this, "input") && this.type === "checkbox" && this.click) {
            this.click();
            return false
        }
    }, _default: function (e) {
        return x.nodeName(e.target, "a")
    }}, beforeunload: {postDispatch: function (e) {
        if (e.result !== t) {
            e.originalEvent.returnValue = e.result
        }
    }}}, simulate: function (e, t, n, i) {
        var r = x.extend(new x.Event, n, {type: e, isSimulated: true, originalEvent: {}});
        if (i) {
            x.event.trigger(r, null, t)
        } else {
            x.event.dispatch.call(t, r)
        }
        if (r.isDefaultPrevented()) {
            n.preventDefault()
        }
    }};
    x.removeEvent = s.removeEventListener ? function (e, t, n) {
        if (e.removeEventListener) {
            e.removeEventListener(t, n, false)
        }
    } : function (e, t, n) {
        var i = "on" + t;
        if (e.detachEvent) {
            if (typeof e[i] === r) {
                e[i] = null
            }
            e.detachEvent(i, n)
        }
    };
    x.Event = function (e, t) {
        if (!(this instanceof x.Event)) {
            return new x.Event(e, t)
        }
        if (e && e.type) {
            this.originalEvent = e;
            this.type = e.type;
            this.isDefaultPrevented = e.defaultPrevented || e.returnValue === false || e.getPreventDefault && e.getPreventDefault() ? rt : ot
        } else {
            this.type = e
        }
        if (t) {
            x.extend(this, t)
        }
        this.timeStamp = e && e.timeStamp || x.now();
        this[x.expando] = true
    };
    x.Event.prototype = {isDefaultPrevented: ot, isPropagationStopped: ot, isImmediatePropagationStopped: ot, preventDefault: function () {
        var e = this.originalEvent;
        this.isDefaultPrevented = rt;
        if (!e) {
            return
        }
        if (e.preventDefault) {
            e.preventDefault()
        } else {
            e.returnValue = false
        }
    }, stopPropagation: function () {
        var e = this.originalEvent;
        this.isPropagationStopped = rt;
        if (!e) {
            return
        }
        if (e.stopPropagation) {
            e.stopPropagation()
        }
        e.cancelBubble = true
    }, stopImmediatePropagation: function () {
        this.isImmediatePropagationStopped = rt;
        this.stopPropagation()
    }};
    x.each({mouseenter: "mouseover", mouseleave: "mouseout"}, function (e, t) {
        x.event.special[e] = {delegateType: t, bindType: t, handle: function (e) {
            var n, i = this, r = e.relatedTarget, o = e.handleObj;
            if (!r || r !== i && !x.contains(i, r)) {
                e.type = o.origType;
                n = o.handler.apply(this, arguments);
                e.type = t
            }
            return n
        }}
    });
    if (!x.support.submitBubbles) {
        x.event.special.submit = {setup: function () {
            if (x.nodeName(this, "form")) {
                return false
            }
            x.event.add(this, "click._submit keypress._submit", function (e) {
                var n = e.target, i = x.nodeName(n, "input") || x.nodeName(n, "button") ? n.form : t;
                if (i && !x._data(i, "submitBubbles")) {
                    x.event.add(i, "submit._submit", function (e) {
                        e._submit_bubble = true
                    });
                    x._data(i, "submitBubbles", true)
                }
            })
        }, postDispatch: function (e) {
            if (e._submit_bubble) {
                delete e._submit_bubble;
                if (this.parentNode && !e.isTrigger) {
                    x.event.simulate("submit", this.parentNode, e, true)
                }
            }
        }, teardown: function () {
            if (x.nodeName(this, "form")) {
                return false
            }
            x.event.remove(this, "._submit")
        }}
    }
    if (!x.support.changeBubbles) {
        x.event.special.change = {setup: function () {
            if (Z.test(this.nodeName)) {
                if (this.type === "checkbox" || this.type === "radio") {
                    x.event.add(this, "propertychange._change", function (e) {
                        if (e.originalEvent.propertyName === "checked") {
                            this._just_changed = true
                        }
                    });
                    x.event.add(this, "click._change", function (e) {
                        if (this._just_changed && !e.isTrigger) {
                            this._just_changed = false
                        }
                        x.event.simulate("change", this, e, true)
                    })
                }
                return false
            }
            x.event.add(this, "beforeactivate._change", function (e) {
                var t = e.target;
                if (Z.test(t.nodeName) && !x._data(t, "changeBubbles")) {
                    x.event.add(t, "change._change", function (e) {
                        if (this.parentNode && !e.isSimulated && !e.isTrigger) {
                            x.event.simulate("change", this.parentNode, e, true)
                        }
                    });
                    x._data(t, "changeBubbles", true)
                }
            })
        }, handle: function (e) {
            var t = e.target;
            if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox") {
                return e.handleObj.handler.apply(this, arguments)
            }
        }, teardown: function () {
            x.event.remove(this, "._change");
            return!Z.test(this.nodeName)
        }}
    }
    if (!x.support.focusinBubbles) {
        x.each({focus: "focusin", blur: "focusout"}, function (e, t) {
            var n = 0, i = function (e) {
                x.event.simulate(t, e.target, x.event.fix(e), true)
            };
            x.event.special[t] = {setup: function () {
                if (n++ === 0) {
                    s.addEventListener(e, i, true)
                }
            }, teardown: function () {
                if (--n === 0) {
                    s.removeEventListener(e, i, true)
                }
            }}
        })
    }
    x.fn.extend({on: function (e, n, i, r, o) {
        var s, a;
        if (typeof e === "object") {
            if (typeof n !== "string") {
                i = i || n;
                n = t
            }
            for (s in e) {
                this.on(s, n, i, e[s], o)
            }
            return this
        }
        if (i == null && r == null) {
            r = n;
            i = n = t
        } else if (r == null) {
            if (typeof n === "string") {
                r = i;
                i = t
            } else {
                r = i;
                i = n;
                n = t
            }
        }
        if (r === false) {
            r = ot
        } else if (!r) {
            return this
        }
        if (o === 1) {
            a = r;
            r = function (e) {
                x().off(e);
                return a.apply(this, arguments)
            };
            r.guid = a.guid || (a.guid = x.guid++)
        }
        return this.each(function () {
            x.event.add(this, e, r, i, n)
        })
    }, one: function (e, t, n, i) {
        return this.on(e, t, n, i, 1)
    }, off: function (e, n, i) {
        var r, o;
        if (e && e.preventDefault && e.handleObj) {
            r = e.handleObj;
            x(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler);
            return this
        }
        if (typeof e === "object") {
            for (o in e) {
                this.off(o, n, e[o])
            }
            return this
        }
        if (n === false || typeof n === "function") {
            i = n;
            n = t
        }
        if (i === false) {
            i = ot
        }
        return this.each(function () {
            x.event.remove(this, e, i, n)
        })
    }, trigger: function (e, t) {
        return this.each(function () {
            x.event.trigger(e, t, this)
        })
    }, triggerHandler: function (e, t) {
        var n = this[0];
        if (n) {
            return x.event.trigger(e, t, n, true)
        }
    }});
    var at = /^.[^:#\[\.,]*$/, ut = /^(?:parents|prev(?:Until|All))/, lt = x.expr.match.needsContext, ft = {children: true, contents: true, next: true, prev: true};
    x.fn.extend({find: function (e) {
        var t, n = [], i = this, r = i.length;
        if (typeof e !== "string") {
            return this.pushStack(x(e).filter(function () {
                for (t = 0; t < r; t++) {
                    if (x.contains(i[t], this)) {
                        return true
                    }
                }
            }))
        }
        for (t = 0; t < r; t++) {
            x.find(e, i[t], n)
        }
        n = this.pushStack(r > 1 ? x.unique(n) : n);
        n.selector = this.selector ? this.selector + " " + e : e;
        return n
    }, has: function (e) {
        var t, n = x(e, this), i = n.length;
        return this.filter(function () {
            for (t = 0; t < i; t++) {
                if (x.contains(this, n[t])) {
                    return true
                }
            }
        })
    }, not: function (e) {
        return this.pushStack(pt(this, e || [], true))
    }, filter: function (e) {
        return this.pushStack(pt(this, e || [], false))
    }, is: function (e) {
        return!!pt(this, typeof e === "string" && lt.test(e) ? x(e) : e || [], false).length
    }, closest: function (e, t) {
        var n, i = 0, r = this.length, o = [], s = lt.test(e) || typeof e !== "string" ? x(e, t || this.context) : 0;
        for (; i < r; i++) {
            for (n = this[i]; n && n !== t; n = n.parentNode) {
                if (n.nodeType < 11 && (s ? s.index(n) > -1 : n.nodeType === 1 && x.find.matchesSelector(n, e))) {
                    n = o.push(n);
                    break
                }
            }
        }
        return this.pushStack(o.length > 1 ? x.unique(o) : o)
    }, index: function (e) {
        if (!e) {
            return this[0] && this[0].parentNode ? this.first().prevAll().length : -1
        }
        if (typeof e === "string") {
            return x.inArray(this[0], x(e))
        }
        return x.inArray(e.jquery ? e[0] : e, this)
    }, add: function (e, t) {
        var n = typeof e === "string" ? x(e, t) : x.makeArray(e && e.nodeType ? [e] : e), i = x.merge(this.get(), n);
        return this.pushStack(x.unique(i))
    }, addBack: function (e) {
        return this.add(e == null ? this.prevObject : this.prevObject.filter(e))
    }});
    function ct(e, t) {
        do {
            e = e[t]
        } while (e && e.nodeType !== 1);
        return e
    }

    x.each({parent: function (e) {
        var t = e.parentNode;
        return t && t.nodeType !== 11 ? t : null
    }, parents: function (e) {
        return x.dir(e, "parentNode")
    }, parentsUntil: function (e, t, n) {
        return x.dir(e, "parentNode", n)
    }, next: function (e) {
        return ct(e, "nextSibling")
    }, prev: function (e) {
        return ct(e, "previousSibling")
    }, nextAll: function (e) {
        return x.dir(e, "nextSibling")
    }, prevAll: function (e) {
        return x.dir(e, "previousSibling")
    }, nextUntil: function (e, t, n) {
        return x.dir(e, "nextSibling", n)
    }, prevUntil: function (e, t, n) {
        return x.dir(e, "previousSibling", n)
    }, siblings: function (e) {
        return x.sibling((e.parentNode || {}).firstChild, e)
    }, children: function (e) {
        return x.sibling(e.firstChild)
    }, contents: function (e) {
        return x.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : x.merge([], e.childNodes)
    }}, function (e, t) {
        x.fn[e] = function (n, i) {
            var r = x.map(this, t, n);
            if (e.slice(-5) !== "Until") {
                i = n
            }
            if (i && typeof i === "string") {
                r = x.filter(i, r)
            }
            if (this.length > 1) {
                if (!ft[e]) {
                    r = x.unique(r)
                }
                if (ut.test(e)) {
                    r = r.reverse()
                }
            }
            return this.pushStack(r)
        }
    });
    x.extend({filter: function (e, t, n) {
        var i = t[0];
        if (n) {
            e = ":not(" + e + ")"
        }
        return t.length === 1 && i.nodeType === 1 ? x.find.matchesSelector(i, e) ? [i] : [] : x.find.matches(e, x.grep(t, function (e) {
            return e.nodeType === 1
        }))
    }, dir: function (e, n, i) {
        var r = [], o = e[n];
        while (o && o.nodeType !== 9 && (i === t || o.nodeType !== 1 || !x(o).is(i))) {
            if (o.nodeType === 1) {
                r.push(o)
            }
            o = o[n]
        }
        return r
    }, sibling: function (e, t) {
        var n = [];
        for (; e; e = e.nextSibling) {
            if (e.nodeType === 1 && e !== t) {
                n.push(e)
            }
        }
        return n
    }});
    function pt(e, t, n) {
        if (x.isFunction(t)) {
            return x.grep(e, function (e, i) {
                return!!t.call(e, i, e) !== n
            })
        }
        if (t.nodeType) {
            return x.grep(e, function (e) {
                return e === t !== n
            })
        }
        if (typeof t === "string") {
            if (at.test(t)) {
                return x.filter(t, e, n)
            }
            t = x.filter(t, e)
        }
        return x.grep(e, function (e) {
            return x.inArray(e, t) >= 0 !== n
        })
    }

    function dt(e) {
        var t = ht.split("|"), n = e.createDocumentFragment();
        if (n.createElement) {
            while (t.length) {
                n.createElement(t.pop())
            }
        }
        return n
    }

    var ht = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", gt = / jQuery\d+="(?:null|\d+)"/g, mt = new RegExp("<(?:" + ht + ")[\\s/>]", "i"), yt = /^\s+/, vt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, bt = /<([\w:]+)/, xt = /<tbody/i, wt = /<|&#?\w+;/, Tt = /<(?:script|style|link)/i, Ct = /^(?:checkbox|radio)$/i, Nt = /checked\s*(?:[^=]|=\s*.checked.)/i, kt = /^$|\/(?:java|ecma)script/i, Et = /^true\/(.*)/, St = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, At = {option: [1, "<select multiple='multiple'>", "</select>"], legend: [1, "<fieldset>", "</fieldset>"], area: [1, "<map>", "</map>"], param: [1, "<object>", "</object>"], thead: [1, "<table>", "</table>"], tr: [2, "<table><tbody>", "</tbody></table>"], col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _default: x.support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]}, jt = dt(s), Dt = jt.appendChild(s.createElement("div"));
    At.optgroup = At.option;
    At.tbody = At.tfoot = At.colgroup = At.caption = At.thead;
    At.th = At.td;
    x.fn.extend({text: function (e) {
        return x.access(this, function (e) {
            return e === t ? x.text(this) : this.empty().append((this[0] && this[0].ownerDocument || s).createTextNode(e))
        }, null, e, arguments.length)
    }, append: function () {
        return this.domManip(arguments, function (e) {
            if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                var t = Lt(this, e);
                t.appendChild(e)
            }
        })
    }, prepend: function () {
        return this.domManip(arguments, function (e) {
            if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                var t = Lt(this, e);
                t.insertBefore(e, t.firstChild)
            }
        })
    }, before: function () {
        return this.domManip(arguments, function (e) {
            if (this.parentNode) {
                this.parentNode.insertBefore(e, this)
            }
        })
    }, after: function () {
        return this.domManip(arguments, function (e) {
            if (this.parentNode) {
                this.parentNode.insertBefore(e, this.nextSibling)
            }
        })
    }, remove: function (e, t) {
        var n, i = e ? x.filter(e, this) : this, r = 0;
        for (; (n = i[r]) != null; r++) {
            if (!t && n.nodeType === 1) {
                x.cleanData(Ft(n))
            }
            if (n.parentNode) {
                if (t && x.contains(n.ownerDocument, n)) {
                    _t(Ft(n, "script"))
                }
                n.parentNode.removeChild(n)
            }
        }
        return this
    }, empty: function () {
        var e, t = 0;
        for (; (e = this[t]) != null; t++) {
            if (e.nodeType === 1) {
                x.cleanData(Ft(e, false))
            }
            while (e.firstChild) {
                e.removeChild(e.firstChild)
            }
            if (e.options && x.nodeName(e, "select")) {
                e.options.length = 0
            }
        }
        return this
    }, clone: function (e, t) {
        e = e == null ? false : e;
        t = t == null ? e : t;
        return this.map(function () {
            return x.clone(this, e, t)
        })
    }, html: function (e) {
        return x.access(this, function (e) {
            var n = this[0] || {}, i = 0, r = this.length;
            if (e === t) {
                return n.nodeType === 1 ? n.innerHTML.replace(gt, "") : t
            }
            if (typeof e === "string" && !Tt.test(e) && (x.support.htmlSerialize || !mt.test(e)) && (x.support.leadingWhitespace || !yt.test(e)) && !At[(bt.exec(e) || ["", ""])[1].toLowerCase()]) {
                e = e.replace(vt, "<$1></$2>");
                try {
                    for (; i < r; i++) {
                        n = this[i] || {};
                        if (n.nodeType === 1) {
                            x.cleanData(Ft(n, false));
                            n.innerHTML = e
                        }
                    }
                    n = 0
                } catch (o) {
                }
            }
            if (n) {
                this.empty().append(e)
            }
        }, null, e, arguments.length)
    }, replaceWith: function () {
        var e = x.map(this, function (e) {
            return[e.nextSibling, e.parentNode]
        }), t = 0;
        this.domManip(arguments, function (n) {
            var i = e[t++], r = e[t++];
            if (r) {
                if (i && i.parentNode !== r) {
                    i = this.nextSibling
                }
                x(this).remove();
                r.insertBefore(n, i)
            }
        }, true);
        return t ? this : this.remove()
    }, detach: function (e) {
        return this.remove(e, true)
    }, domManip: function (e, t, n) {
        e = d.apply([], e);
        var i, r, o, s, a, u, l = 0, f = this.length, c = this, p = f - 1, h = e[0], g = x.isFunction(h);
        if (g || !(f <= 1 || typeof h !== "string" || x.support.checkClone || !Nt.test(h))) {
            return this.each(function (i) {
                var r = c.eq(i);
                if (g) {
                    e[0] = h.call(this, i, r.html())
                }
                r.domManip(e, t, n)
            })
        }
        if (f) {
            u = x.buildFragment(e, this[0].ownerDocument, false, !n && this);
            i = u.firstChild;
            if (u.childNodes.length === 1) {
                u = i
            }
            if (i) {
                s = x.map(Ft(u, "script"), Ht);
                o = s.length;
                for (; l < f; l++) {
                    r = u;
                    if (l !== p) {
                        r = x.clone(r, true, true);
                        if (o) {
                            x.merge(s, Ft(r, "script"))
                        }
                    }
                    t.call(this[l], r, l)
                }
                if (o) {
                    a = s[s.length - 1].ownerDocument;
                    x.map(s, qt);
                    for (l = 0; l < o; l++) {
                        r = s[l];
                        if (kt.test(r.type || "") && !x._data(r, "globalEval") && x.contains(a, r)) {
                            if (r.src) {
                                x._evalUrl(r.src)
                            } else {
                                x.globalEval((r.text || r.textContent || r.innerHTML || "").replace(St, ""))
                            }
                        }
                    }
                }
                u = i = null
            }
        }
        return this
    }});
    function Lt(e, t) {
        return x.nodeName(e, "table") && x.nodeName(t.nodeType === 1 ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
    }

    function Ht(e) {
        e.type = (x.find.attr(e, "type") !== null) + "/" + e.type;
        return e
    }

    function qt(e) {
        var t = Et.exec(e.type);
        if (t) {
            e.type = t[1]
        } else {
            e.removeAttribute("type")
        }
        return e
    }

    function _t(e, t) {
        var n, i = 0;
        for (; (n = e[i]) != null; i++) {
            x._data(n, "globalEval", !t || x._data(t[i], "globalEval"))
        }
    }

    function Mt(e, t) {
        if (t.nodeType !== 1 || !x.hasData(e)) {
            return
        }
        var n, i, r, o = x._data(e), s = x._data(t, o), a = o.events;
        if (a) {
            delete s.handle;
            s.events = {};
            for (n in a) {
                for (i = 0, r = a[n].length; i < r; i++) {
                    x.event.add(t, n, a[n][i])
                }
            }
        }
        if (s.data) {
            s.data = x.extend({}, s.data)
        }
    }

    function Ot(e, t) {
        var n, i, r;
        if (t.nodeType !== 1) {
            return
        }
        n = t.nodeName.toLowerCase();
        if (!x.support.noCloneEvent && t[x.expando]) {
            r = x._data(t);
            for (i in r.events) {
                x.removeEvent(t, i, r.handle)
            }
            t.removeAttribute(x.expando)
        }
        if (n === "script" && t.text !== e.text) {
            Ht(t).text = e.text;
            qt(t)
        } else if (n === "object") {
            if (t.parentNode) {
                t.outerHTML = e.outerHTML
            }
            if (x.support.html5Clone && e.innerHTML && !x.trim(t.innerHTML)) {
                t.innerHTML = e.innerHTML
            }
        } else if (n === "input" && Ct.test(e.type)) {
            t.defaultChecked = t.checked = e.checked;
            if (t.value !== e.value) {
                t.value = e.value
            }
        } else if (n === "option") {
            t.defaultSelected = t.selected = e.defaultSelected
        } else if (n === "input" || n === "textarea") {
            t.defaultValue = e.defaultValue
        }
    }

    x.each({appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith"}, function (e, t) {
        x.fn[e] = function (e) {
            var n, i = 0, r = [], o = x(e), s = o.length - 1;
            for (; i <= s; i++) {
                n = i === s ? this : this.clone(true);
                x(o[i])[t](n);
                h.apply(r, n.get())
            }
            return this.pushStack(r)
        }
    });
    function Ft(e, n) {
        var i, o, s = 0, a = typeof e.getElementsByTagName !== r ? e.getElementsByTagName(n || "*") : typeof e.querySelectorAll !== r ? e.querySelectorAll(n || "*") : t;
        if (!a) {
            for (a = [], i = e.childNodes || e; (o = i[s]) != null; s++) {
                if (!n || x.nodeName(o, n)) {
                    a.push(o)
                } else {
                    x.merge(a, Ft(o, n))
                }
            }
        }
        return n === t || n && x.nodeName(e, n) ? x.merge([e], a) : a
    }

    function Bt(e) {
        if (Ct.test(e.type)) {
            e.defaultChecked = e.checked
        }
    }

    x.extend({clone: function (e, t, n) {
        var i, r, o, s, a, u = x.contains(e.ownerDocument, e);
        if (x.support.html5Clone || x.isXMLDoc(e) || !mt.test("<" + e.nodeName + ">")) {
            o = e.cloneNode(true)
        } else {
            Dt.innerHTML = e.outerHTML;
            Dt.removeChild(o = Dt.firstChild)
        }
        if ((!x.support.noCloneEvent || !x.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !x.isXMLDoc(e)) {
            i = Ft(o);
            a = Ft(e);
            for (s = 0; (r = a[s]) != null; ++s) {
                if (i[s]) {
                    Ot(r, i[s])
                }
            }
        }
        if (t) {
            if (n) {
                a = a || Ft(e);
                i = i || Ft(o);
                for (s = 0; (r = a[s]) != null; s++) {
                    Mt(r, i[s])
                }
            } else {
                Mt(e, o)
            }
        }
        i = Ft(o, "script");
        if (i.length > 0) {
            _t(i, !u && Ft(e, "script"))
        }
        i = a = r = null;
        return o
    }, buildFragment: function (e, t, n, i) {
        var r, o, s, a, u, l, f, c = e.length, p = dt(t), d = [], h = 0;
        for (; h < c; h++) {
            o = e[h];
            if (o || o === 0) {
                if (x.type(o) === "object") {
                    x.merge(d, o.nodeType ? [o] : o)
                } else if (!wt.test(o)) {
                    d.push(t.createTextNode(o))
                } else {
                    a = a || p.appendChild(t.createElement("div"));
                    u = (bt.exec(o) || ["", ""])[1].toLowerCase();
                    f = At[u] || At._default;
                    a.innerHTML = f[1] + o.replace(vt, "<$1></$2>") + f[2];
                    r = f[0];
                    while (r--) {
                        a = a.lastChild
                    }
                    if (!x.support.leadingWhitespace && yt.test(o)) {
                        d.push(t.createTextNode(yt.exec(o)[0]))
                    }
                    if (!x.support.tbody) {
                        o = u === "table" && !xt.test(o) ? a.firstChild : f[1] === "<table>" && !xt.test(o) ? a : 0;
                        r = o && o.childNodes.length;
                        while (r--) {
                            if (x.nodeName(l = o.childNodes[r], "tbody") && !l.childNodes.length) {
                                o.removeChild(l)
                            }
                        }
                    }
                    x.merge(d, a.childNodes);
                    a.textContent = "";
                    while (a.firstChild) {
                        a.removeChild(a.firstChild)
                    }
                    a = p.lastChild
                }
            }
        }
        if (a) {
            p.removeChild(a)
        }
        if (!x.support.appendChecked) {
            x.grep(Ft(d, "input"), Bt)
        }
        h = 0;
        while (o = d[h++]) {
            if (i && x.inArray(o, i) !== -1) {
                continue
            }
            s = x.contains(o.ownerDocument, o);
            a = Ft(p.appendChild(o), "script");
            if (s) {
                _t(a)
            }
            if (n) {
                r = 0;
                while (o = a[r++]) {
                    if (kt.test(o.type || "")) {
                        n.push(o)
                    }
                }
            }
        }
        a = null;
        return p
    }, cleanData: function (e, t) {
        var n, i, o, s, a = 0, u = x.expando, l = x.cache, f = x.support.deleteExpando, p = x.event.special;
        for (; (n = e[a]) != null; a++) {
            if (t || x.acceptData(n)) {
                o = n[u];
                s = o && l[o];
                if (s) {
                    if (s.events) {
                        for (i in s.events) {
                            if (p[i]) {
                                x.event.remove(n, i)
                            } else {
                                x.removeEvent(n, i, s.handle)
                            }
                        }
                    }
                    if (l[o]) {
                        delete l[o];
                        if (f) {
                            delete n[u]
                        } else if (typeof n.removeAttribute !== r) {
                            n.removeAttribute(u)
                        } else {
                            n[u] = null
                        }
                        c.push(o)
                    }
                }
            }
        }
    }, _evalUrl: function (e) {
        return x.ajax({url: e, type: "GET", dataType: "script", async: false, global: false, "throws": true})
    }});
    x.fn.extend({wrapAll: function (e) {
        if (x.isFunction(e)) {
            return this.each(function (t) {
                x(this).wrapAll(e.call(this, t))
            })
        }
        if (this[0]) {
            var t = x(e, this[0].ownerDocument).eq(0).clone(true);
            if (this[0].parentNode) {
                t.insertBefore(this[0])
            }
            t.map(function () {
                var e = this;
                while (e.firstChild && e.firstChild.nodeType === 1) {
                    e = e.firstChild
                }
                return e
            }).append(this)
        }
        return this
    }, wrapInner: function (e) {
        if (x.isFunction(e)) {
            return this.each(function (t) {
                x(this).wrapInner(e.call(this, t))
            })
        }
        return this.each(function () {
            var t = x(this), n = t.contents();
            if (n.length) {
                n.wrapAll(e)
            } else {
                t.append(e)
            }
        })
    }, wrap: function (e) {
        var t = x.isFunction(e);
        return this.each(function (n) {
            x(this).wrapAll(t ? e.call(this, n) : e)
        })
    }, unwrap: function () {
        return this.parent().each(function () {
            if (!x.nodeName(this, "body")) {
                x(this).replaceWith(this.childNodes)
            }
        }).end()
    }});
    var Pt, Rt, Wt, $t = /alpha\([^)]*\)/i, It = /opacity\s*=\s*([^)]*)/, zt = /^(top|right|bottom|left)$/, Xt = /^(none|table(?!-c[ea]).+)/, Ut = /^margin/, Vt = new RegExp("^(" + w + ")(.*)$", "i"), Yt = new RegExp("^(" + w + ")(?!px)[a-z%]+$", "i"), Jt = new RegExp("^([+-])=(" + w + ")", "i"), Gt = {BODY: "block"}, Qt = {position: "absolute", visibility: "hidden", display: "block"}, Kt = {letterSpacing: 0, fontWeight: 400}, Zt = ["Top", "Right", "Bottom", "Left"], en = ["Webkit", "O", "Moz", "ms"];

    function tn(e, t) {
        if (t in e) {
            return t
        }
        var n = t.charAt(0).toUpperCase() + t.slice(1), i = t, r = en.length;
        while (r--) {
            t = en[r] + n;
            if (t in e) {
                return t
            }
        }
        return i
    }

    function nn(e, t) {
        e = t || e;
        return x.css(e, "display") === "none" || !x.contains(e.ownerDocument, e)
    }

    function rn(e, t) {
        var n, i, r, o = [], s = 0, a = e.length;
        for (; s < a; s++) {
            i = e[s];
            if (!i.style) {
                continue
            }
            o[s] = x._data(i, "olddisplay");
            n = i.style.display;
            if (t) {
                if (!o[s] && n === "none") {
                    i.style.display = ""
                }
                if (i.style.display === "" && nn(i)) {
                    o[s] = x._data(i, "olddisplay", un(i.nodeName))
                }
            } else {
                if (!o[s]) {
                    r = nn(i);
                    if (n && n !== "none" || !r) {
                        x._data(i, "olddisplay", r ? n : x.css(i, "display"))
                    }
                }
            }
        }
        for (s = 0; s < a; s++) {
            i = e[s];
            if (!i.style) {
                continue
            }
            if (!t || i.style.display === "none" || i.style.display === "") {
                i.style.display = t ? o[s] || "" : "none"
            }
        }
        return e
    }

    x.fn.extend({css: function (e, n) {
        return x.access(this, function (e, n, i) {
            var r, o, s = {}, a = 0;
            if (x.isArray(n)) {
                o = Rt(e);
                r = n.length;
                for (; a < r; a++) {
                    s[n[a]] = x.css(e, n[a], false, o)
                }
                return s
            }
            return i !== t ? x.style(e, n, i) : x.css(e, n)
        }, e, n, arguments.length > 1)
    }, show: function () {
        return rn(this, true)
    }, hide: function () {
        return rn(this)
    }, toggle: function (e) {
        if (typeof e === "boolean") {
            return e ? this.show() : this.hide()
        }
        return this.each(function () {
            if (nn(this)) {
                x(this).show()
            } else {
                x(this).hide()
            }
        })
    }});
    x.extend({cssHooks: {opacity: {get: function (e, t) {
        if (t) {
            var n = Wt(e, "opacity");
            return n === "" ? "1" : n
        }
    }}}, cssNumber: {columnCount: true, fillOpacity: true, fontWeight: true, lineHeight: true, opacity: true, order: true, orphans: true, widows: true, zIndex: true, zoom: true}, cssProps: {"float": x.support.cssFloat ? "cssFloat" : "styleFloat"}, style: function (e, n, i, r) {
        if (!e || e.nodeType === 3 || e.nodeType === 8 || !e.style) {
            return
        }
        var o, s, a, u = x.camelCase(n), l = e.style;
        n = x.cssProps[u] || (x.cssProps[u] = tn(l, u));
        a = x.cssHooks[n] || x.cssHooks[u];
        if (i !== t) {
            s = typeof i;
            if (s === "string" && (o = Jt.exec(i))) {
                i = (o[1] + 1) * o[2] + parseFloat(x.css(e, n));
                s = "number"
            }
            if (i == null || s === "number" && isNaN(i)) {
                return
            }
            if (s === "number" && !x.cssNumber[u]) {
                i += "px"
            }
            if (!x.support.clearCloneStyle && i === "" && n.indexOf("background") === 0) {
                l[n] = "inherit"
            }
            if (!a || !("set"in a) || (i = a.set(e, i, r)) !== t) {
                try {
                    l[n] = i
                } catch (f) {
                }
            }
        } else {
            if (a && "get"in a && (o = a.get(e, false, r)) !== t) {
                return o
            }
            return l[n]
        }
    }, css: function (e, n, i, r) {
        var o, s, a, u = x.camelCase(n);
        n = x.cssProps[u] || (x.cssProps[u] = tn(e.style, u));
        a = x.cssHooks[n] || x.cssHooks[u];
        if (a && "get"in a) {
            s = a.get(e, true, i)
        }
        if (s === t) {
            s = Wt(e, n, r)
        }
        if (s === "normal" && n in Kt) {
            s = Kt[n]
        }
        if (i === "" || i) {
            o = parseFloat(s);
            return i === true || x.isNumeric(o) ? o || 0 : s
        }
        return s
    }});
    if (e.getComputedStyle) {
        Rt = function (t) {
            return e.getComputedStyle(t, null)
        };
        Wt = function (e, n, i) {
            var r, o, s, a = i || Rt(e), u = a ? a.getPropertyValue(n) || a[n] : t, l = e.style;
            if (a) {
                if (u === "" && !x.contains(e.ownerDocument, e)) {
                    u = x.style(e, n)
                }
                if (Yt.test(u) && Ut.test(n)) {
                    r = l.width;
                    o = l.minWidth;
                    s = l.maxWidth;
                    l.minWidth = l.maxWidth = l.width = u;
                    u = a.width;
                    l.width = r;
                    l.minWidth = o;
                    l.maxWidth = s
                }
            }
            return u
        }
    } else if (s.documentElement.currentStyle) {
        Rt = function (e) {
            return e.currentStyle
        };
        Wt = function (e, n, i) {
            var r, o, s, a = i || Rt(e), u = a ? a[n] : t, l = e.style;
            if (u == null && l && l[n]) {
                u = l[n]
            }
            if (Yt.test(u) && !zt.test(n)) {
                r = l.left;
                o = e.runtimeStyle;
                s = o && o.left;
                if (s) {
                    o.left = e.currentStyle.left
                }
                l.left = n === "fontSize" ? "1em" : u;
                u = l.pixelLeft + "px";
                l.left = r;
                if (s) {
                    o.left = s
                }
            }
            return u === "" ? "auto" : u
        }
    }
    function on(e, t, n) {
        var i = Vt.exec(t);
        return i ? Math.max(0, i[1] - (n || 0)) + (i[2] || "px") : t
    }

    function sn(e, t, n, i, r) {
        var o = n === (i ? "border" : "content") ? 4 : t === "width" ? 1 : 0, s = 0;
        for (; o < 4; o += 2) {
            if (n === "margin") {
                s += x.css(e, n + Zt[o], true, r)
            }
            if (i) {
                if (n === "content") {
                    s -= x.css(e, "padding" + Zt[o], true, r)
                }
                if (n !== "margin") {
                    s -= x.css(e, "border" + Zt[o] + "Width", true, r)
                }
            } else {
                s += x.css(e, "padding" + Zt[o], true, r);
                if (n !== "padding") {
                    s += x.css(e, "border" + Zt[o] + "Width", true, r)
                }
            }
        }
        return s
    }

    function an(e, t, n) {
        var i = true, r = t === "width" ? e.offsetWidth : e.offsetHeight, o = Rt(e), s = x.support.boxSizing && x.css(e, "boxSizing", false, o) === "border-box";
        if (r <= 0 || r == null) {
            r = Wt(e, t, o);
            if (r < 0 || r == null) {
                r = e.style[t]
            }
            if (Yt.test(r)) {
                return r
            }
            i = s && (x.support.boxSizingReliable || r === e.style[t]);
            r = parseFloat(r) || 0
        }
        return r + sn(e, t, n || (s ? "border" : "content"), i, o) + "px"
    }

    function un(e) {
        var t = s, n = Gt[e];
        if (!n) {
            n = ln(e, t);
            if (n === "none" || !n) {
                Pt = (Pt || x("<iframe frameborder='0' width='0' height='0'/>").css("cssText", "display:block !important")).appendTo(t.documentElement);
                t = (Pt[0].contentWindow || Pt[0].contentDocument).document;
                t.write("<!doctype html><html><body>");
                t.close();
                n = ln(e, t);
                Pt.detach()
            }
            Gt[e] = n
        }
        return n
    }

    function ln(e, t) {
        var n = x(t.createElement(e)).appendTo(t.body), i = x.css(n[0], "display");
        n.remove();
        return i
    }

    x.each(["height", "width"], function (e, t) {
        x.cssHooks[t] = {get: function (e, n, i) {
            if (n) {
                return e.offsetWidth === 0 && Xt.test(x.css(e, "display")) ? x.swap(e, Qt, function () {
                    return an(e, t, i)
                }) : an(e, t, i)
            }
        }, set: function (e, n, i) {
            var r = i && Rt(e);
            return on(e, n, i ? sn(e, t, i, x.support.boxSizing && x.css(e, "boxSizing", false, r) === "border-box", r) : 0)
        }}
    });
    if (!x.support.opacity) {
        x.cssHooks.opacity = {get: function (e, t) {
            return It.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
        }, set: function (e, t) {
            var n = e.style, i = e.currentStyle, r = x.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")" : "", o = i && i.filter || n.filter || "";
            n.zoom = 1;
            if ((t >= 1 || t === "") && x.trim(o.replace($t, "")) === "" && n.removeAttribute) {
                n.removeAttribute("filter");
                if (t === "" || i && !i.filter) {
                    return
                }
            }
            n.filter = $t.test(o) ? o.replace($t, r) : o + " " + r
        }}
    }
    x(function () {
        if (!x.support.reliableMarginRight) {
            x.cssHooks.marginRight = {get: function (e, t) {
                if (t) {
                    return x.swap(e, {display: "inline-block"}, Wt, [e, "marginRight"])
                }
            }}
        }
        if (!x.support.pixelPosition && x.fn.position) {
            x.each(["top", "left"], function (e, t) {
                x.cssHooks[t] = {get: function (e, n) {
                    if (n) {
                        n = Wt(e, t);
                        return Yt.test(n) ? x(e).position()[t] + "px" : n
                    }
                }}
            })
        }
    });
    if (x.expr && x.expr.filters) {
        x.expr.filters.hidden = function (e) {
            return e.offsetWidth <= 0 && e.offsetHeight <= 0 || !x.support.reliableHiddenOffsets && (e.style && e.style.display || x.css(e, "display")) === "none"
        };
        x.expr.filters.visible = function (e) {
            return!x.expr.filters.hidden(e)
        }
    }
    x.each({margin: "", padding: "", border: "Width"}, function (e, t) {
        x.cssHooks[e + t] = {expand: function (n) {
            var i = 0, r = {}, o = typeof n === "string" ? n.split(" ") : [n];
            for (; i < 4; i++) {
                r[e + Zt[i] + t] = o[i] || o[i - 2] || o[0]
            }
            return r
        }};
        if (!Ut.test(e)) {
            x.cssHooks[e + t].set = on
        }
    });
    var fn = /%20/g, cn = /\[\]$/, pn = /\r?\n/g, dn = /^(?:submit|button|image|reset|file)$/i, hn = /^(?:input|select|textarea|keygen)/i;
    x.fn.extend({serialize: function () {
        return x.param(this.serializeArray())
    }, serializeArray: function () {
        return this.map(function () {
            var e = x.prop(this, "elements");
            return e ? x.makeArray(e) : this
        }).filter(function () {
            var e = this.type;
            return this.name && !x(this).is(":disabled") && hn.test(this.nodeName) && !dn.test(e) && (this.checked || !Ct.test(e))
        }).map(function (e, t) {
            var n = x(this).val();
            return n == null ? null : x.isArray(n) ? x.map(n, function (e) {
                return{name: t.name, value: e.replace(pn, "\r\n")}
            }) : {name: t.name, value: n.replace(pn, "\r\n")}
        }).get()
    }});
    x.param = function (e, n) {
        var i, r = [], o = function (e, t) {
            t = x.isFunction(t) ? t() : t == null ? "" : t;
            r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
        };
        if (n === t) {
            n = x.ajaxSettings && x.ajaxSettings.traditional
        }
        if (x.isArray(e) || e.jquery && !x.isPlainObject(e)) {
            x.each(e, function () {
                o(this.name, this.value)
            })
        } else {
            for (i in e) {
                gn(i, e[i], n, o)
            }
        }
        return r.join("&").replace(fn, "+")
    };
    function gn(e, t, n, i) {
        var r;
        if (x.isArray(t)) {
            x.each(t, function (t, r) {
                if (n || cn.test(e)) {
                    i(e, r)
                } else {
                    gn(e + "[" + (typeof r === "object" ? t : "") + "]", r, n, i)
                }
            })
        } else if (!n && x.type(t) === "object") {
            for (r in t) {
                gn(e + "[" + r + "]", t[r], n, i)
            }
        } else {
            i(e, t)
        }
    }

    x.each(("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error contextmenu").split(" "), function (e, t) {
        x.fn[t] = function (e, n) {
            return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
        }
    });
    x.fn.extend({hover: function (e, t) {
        return this.mouseenter(e).mouseleave(t || e)
    }, bind: function (e, t, n) {
        return this.on(e, null, t, n)
    }, unbind: function (e, t) {
        return this.off(e, null, t)
    }, delegate: function (e, t, n, i) {
        return this.on(t, e, n, i)
    }, undelegate: function (e, t, n) {
        return arguments.length === 1 ? this.off(e, "**") : this.off(t, e || "**", n)
    }});
    var mn, yn, vn = x.now(), bn = /\?/, xn = /#.*$/, wn = /([?&])_=[^&]*/, Tn = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm, Cn = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, Nn = /^(?:GET|HEAD)$/, kn = /^\/\//, En = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, Sn = x.fn.load, An = {}, jn = {}, Dn = "*/".concat("*");
    try {
        yn = o.href
    } catch (Ln) {
        yn = s.createElement("a");
        yn.href = "";
        yn = yn.href
    }
    mn = En.exec(yn.toLowerCase()) || [];
    function Hn(e) {
        return function (t, n) {
            if (typeof t !== "string") {
                n = t;
                t = "*"
            }
            var i, r = 0, o = t.toLowerCase().match(T) || [];
            if (x.isFunction(n)) {
                while (i = o[r++]) {
                    if (i[0] === "+") {
                        i = i.slice(1) || "*";
                        (e[i] = e[i] || []).unshift(n)
                    } else {
                        (e[i] = e[i] || []).push(n)
                    }
                }
            }
        }
    }

    function qn(e, t, n, i) {
        var r = {}, o = e === jn;

        function s(a) {
            var u;
            r[a] = true;
            x.each(e[a] || [], function (e, a) {
                var l = a(t, n, i);
                if (typeof l === "string" && !o && !r[l]) {
                    t.dataTypes.unshift(l);
                    s(l);
                    return false
                } else if (o) {
                    return!(u = l)
                }
            });
            return u
        }

        return s(t.dataTypes[0]) || !r["*"] && s("*")
    }

    function _n(e, n) {
        var i, r, o = x.ajaxSettings.flatOptions || {};
        for (r in n) {
            if (n[r] !== t) {
                (o[r] ? e : i || (i = {}))[r] = n[r]
            }
        }
        if (i) {
            x.extend(true, e, i)
        }
        return e
    }

    x.fn.load = function (e, n, i) {
        if (typeof e !== "string" && Sn) {
            return Sn.apply(this, arguments)
        }
        var r, o, s, a = this, u = e.indexOf(" ");
        if (u >= 0) {
            r = e.slice(u, e.length);
            e = e.slice(0, u)
        }
        if (x.isFunction(n)) {
            i = n;
            n = t
        } else if (n && typeof n === "object") {
            s = "POST"
        }
        if (a.length > 0) {
            x.ajax({url: e, type: s, dataType: "html", data: n}).done(function (e) {
                o = arguments;
                a.html(r ? x("<div>").append(x.parseHTML(e)).find(r) : e)
            }).complete(i && function (e, t) {
                a.each(i, o || [e.responseText, t, e])
            })
        }
        return this
    };
    x.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (e, t) {
        x.fn[t] = function (e) {
            return this.on(t, e)
        }
    });
    x.extend({active: 0, lastModified: {}, etag: {}, ajaxSettings: {url: yn, type: "GET", isLocal: Cn.test(mn[1]), global: true, processData: true, async: true, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: {"*": Dn, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript"}, contents: {xml: /xml/, html: /html/, json: /json/}, responseFields: {xml: "responseXML", text: "responseText", json: "responseJSON"}, converters: {"* text": String, "text html": true, "text json": x.parseJSON, "text xml": x.parseXML}, flatOptions: {url: true, context: true}}, ajaxSetup: function (e, t) {
        return t ? _n(_n(e, x.ajaxSettings), t) : _n(x.ajaxSettings, e)
    }, ajaxPrefilter: Hn(An), ajaxTransport: Hn(jn), ajax: function (e, n) {
        if (typeof e === "object") {
            n = e;
            e = t
        }
        n = n || {};
        var i, r, o, s, a, u, l, f, c = x.ajaxSetup({}, n), p = c.context || c, d = c.context && (p.nodeType || p.jquery) ? x(p) : x.event, h = x.Deferred(), g = x.Callbacks("once memory"), m = c.statusCode || {}, y = {}, v = {}, b = 0, w = "canceled", C = {readyState: 0, getResponseHeader: function (e) {
            var t;
            if (b === 2) {
                if (!f) {
                    f = {};
                    while (t = Tn.exec(s)) {
                        f[t[1].toLowerCase()] = t[2]
                    }
                }
                t = f[e.toLowerCase()]
            }
            return t == null ? null : t
        }, getAllResponseHeaders: function () {
            return b === 2 ? s : null
        }, setRequestHeader: function (e, t) {
            var n = e.toLowerCase();
            if (!b) {
                e = v[n] = v[n] || e;
                y[e] = t
            }
            return this
        }, overrideMimeType: function (e) {
            if (!b) {
                c.mimeType = e
            }
            return this
        }, statusCode: function (e) {
            var t;
            if (e) {
                if (b < 2) {
                    for (t in e) {
                        m[t] = [m[t], e[t]]
                    }
                } else {
                    C.always(e[C.status])
                }
            }
            return this
        }, abort: function (e) {
            var t = e || w;
            if (l) {
                l.abort(t)
            }
            k(0, t);
            return this
        }};
        h.promise(C).complete = g.add;
        C.success = C.done;
        C.error = C.fail;
        c.url = ((e || c.url || yn) + "").replace(xn, "").replace(kn, mn[1] + "//");
        c.type = n.method || n.type || c.method || c.type;
        c.dataTypes = x.trim(c.dataType || "*").toLowerCase().match(T) || [""];
        if (c.crossDomain == null) {
            i = En.exec(c.url.toLowerCase());
            c.crossDomain = !!(i && (i[1] !== mn[1] || i[2] !== mn[2] || (i[3] || (i[1] === "http:" ? "80" : "443")) !== (mn[3] || (mn[1] === "http:" ? "80" : "443"))))
        }
        if (c.data && c.processData && typeof c.data !== "string") {
            c.data = x.param(c.data, c.traditional)
        }
        qn(An, c, n, C);
        if (b === 2) {
            return C
        }
        u = c.global;
        if (u && x.active++ === 0) {
            x.event.trigger("ajaxStart")
        }
        c.type = c.type.toUpperCase();
        c.hasContent = !Nn.test(c.type);
        o = c.url;
        if (!c.hasContent) {
            if (c.data) {
                o = c.url += (bn.test(o) ? "&" : "?") + c.data;
                delete c.data
            }
            if (c.cache === false) {
                c.url = wn.test(o) ? o.replace(wn, "$1_=" + vn++) : o + (bn.test(o) ? "&" : "?") + "_=" + vn++
            }
        }
        if (c.ifModified) {
            if (x.lastModified[o]) {
                C.setRequestHeader("If-Modified-Since", x.lastModified[o])
            }
            if (x.etag[o]) {
                C.setRequestHeader("If-None-Match", x.etag[o])
            }
        }
        if (c.data && c.hasContent && c.contentType !== false || n.contentType) {
            C.setRequestHeader("Content-Type", c.contentType)
        }
        C.setRequestHeader("Accept", c.dataTypes[0] && c.accepts[c.dataTypes[0]] ? c.accepts[c.dataTypes[0]] + (c.dataTypes[0] !== "*" ? ", " + Dn + "; q=0.01" : "") : c.accepts["*"]);
        for (r in c.headers) {
            C.setRequestHeader(r, c.headers[r])
        }
        if (c.beforeSend && (c.beforeSend.call(p, C, c) === false || b === 2)) {
            return C.abort()
        }
        w = "abort";
        for (r in{success: 1, error: 1, complete: 1}) {
            C[r](c[r])
        }
        l = qn(jn, c, n, C);
        if (!l) {
            k(-1, "No Transport")
        } else {
            C.readyState = 1;
            if (u) {
                d.trigger("ajaxSend", [C, c])
            }
            if (c.async && c.timeout > 0) {
                a = setTimeout(function () {
                    C.abort("timeout")
                }, c.timeout)
            }
            try {
                b = 1;
                l.send(y, k)
            } catch (N) {
                if (b < 2) {
                    k(-1, N)
                } else {
                    throw N
                }
            }
        }
        function k(e, n, i, r) {
            var f, y, v, w, T, N = n;
            if (b === 2) {
                return
            }
            b = 2;
            if (a) {
                clearTimeout(a)
            }
            l = t;
            s = r || "";
            C.readyState = e > 0 ? 4 : 0;
            f = e >= 200 && e < 300 || e === 304;
            if (i) {
                w = Mn(c, C, i)
            }
            w = On(c, w, C, f);
            if (f) {
                if (c.ifModified) {
                    T = C.getResponseHeader("Last-Modified");
                    if (T) {
                        x.lastModified[o] = T
                    }
                    T = C.getResponseHeader("etag");
                    if (T) {
                        x.etag[o] = T
                    }
                }
                if (e === 204 || c.type === "HEAD") {
                    N = "nocontent"
                } else if (e === 304) {
                    N = "notmodified"
                } else {
                    N = w.state;
                    y = w.data;
                    v = w.error;
                    f = !v
                }
            } else {
                v = N;
                if (e || !N) {
                    N = "error";
                    if (e < 0) {
                        e = 0
                    }
                }
            }
            C.status = e;
            C.statusText = (n || N) + "";
            if (f) {
                h.resolveWith(p, [y, N, C])
            } else {
                h.rejectWith(p, [C, N, v])
            }
            C.statusCode(m);
            m = t;
            if (u) {
                d.trigger(f ? "ajaxSuccess" : "ajaxError", [C, c, f ? y : v])
            }
            g.fireWith(p, [C, N]);
            if (u) {
                d.trigger("ajaxComplete", [C, c]);
                if (!--x.active) {
                    x.event.trigger("ajaxStop")
                }
            }
        }

        return C
    }, getJSON: function (e, t, n) {
        return x.get(e, t, n, "json")
    }, getScript: function (e, n) {
        return x.get(e, t, n, "script")
    }});
    x.each(["get", "post"], function (e, n) {
        x[n] = function (e, i, r, o) {
            if (x.isFunction(i)) {
                o = o || r;
                r = i;
                i = t
            }
            return x.ajax({url: e, type: n, dataType: o, data: i, success: r})
        }
    });
    function Mn(e, n, i) {
        var r, o, s, a, u = e.contents, l = e.dataTypes;
        while (l[0] === "*") {
            l.shift();
            if (o === t) {
                o = e.mimeType || n.getResponseHeader("Content-Type")
            }
        }
        if (o) {
            for (a in u) {
                if (u[a] && u[a].test(o)) {
                    l.unshift(a);
                    break
                }
            }
        }
        if (l[0]in i) {
            s = l[0]
        } else {
            for (a in i) {
                if (!l[0] || e.converters[a + " " + l[0]]) {
                    s = a;
                    break
                }
                if (!r) {
                    r = a
                }
            }
            s = s || r
        }
        if (s) {
            if (s !== l[0]) {
                l.unshift(s)
            }
            return i[s]
        }
    }

    function On(e, t, n, i) {
        var r, o, s, a, u, l = {}, f = e.dataTypes.slice();
        if (f[1]) {
            for (s in e.converters) {
                l[s.toLowerCase()] = e.converters[s]
            }
        }
        o = f.shift();
        while (o) {
            if (e.responseFields[o]) {
                n[e.responseFields[o]] = t
            }
            if (!u && i && e.dataFilter) {
                t = e.dataFilter(t, e.dataType)
            }
            u = o;
            o = f.shift();
            if (o) {
                if (o === "*") {
                    o = u
                } else if (u !== "*" && u !== o) {
                    s = l[u + " " + o] || l["* " + o];
                    if (!s) {
                        for (r in l) {
                            a = r.split(" ");
                            if (a[1] === o) {
                                s = l[u + " " + a[0]] || l["* " + a[0]];
                                if (s) {
                                    if (s === true) {
                                        s = l[r]
                                    } else if (l[r] !== true) {
                                        o = a[0];
                                        f.unshift(a[1])
                                    }
                                    break
                                }
                            }
                        }
                    }
                    if (s !== true) {
                        if (s && e["throws"]) {
                            t = s(t)
                        } else {
                            try {
                                t = s(t)
                            } catch (c) {
                                return{state: "parsererror", error: s ? c : "No conversion from " + u + " to " + o}
                            }
                        }
                    }
                }
            }
        }
        return{state: "success", data: t}
    }

    x.ajaxSetup({accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"}, contents: {script: /(?:java|ecma)script/}, converters: {"text script": function (e) {
        x.globalEval(e);
        return e
    }}});
    x.ajaxPrefilter("script", function (e) {
        if (e.cache === t) {
            e.cache = false
        }
        if (e.crossDomain) {
            e.type = "GET";
            e.global = false
        }
    });
    x.ajaxTransport("script", function (e) {
        if (e.crossDomain) {
            var n, i = s.head || x("head")[0] || s.documentElement;
            return{send: function (t, r) {
                n = s.createElement("script");
                n.async = true;
                if (e.scriptCharset) {
                    n.charset = e.scriptCharset
                }
                n.src = e.url;
                n.onload = n.onreadystatechange = function (e, t) {
                    if (t || !n.readyState || /loaded|complete/.test(n.readyState)) {
                        n.onload = n.onreadystatechange = null;
                        if (n.parentNode) {
                            n.parentNode.removeChild(n)
                        }
                        n = null;
                        if (!t) {
                            r(200, "success")
                        }
                    }
                };
                i.insertBefore(n, i.firstChild)
            }, abort: function () {
                if (n) {
                    n.onload(t, true)
                }
            }}
        }
    });
    var Fn = [], Bn = /(=)\?(?=&|$)|\?\?/;
    x.ajaxSetup({jsonp: "callback", jsonpCallback: function () {
        var e = Fn.pop() || x.expando + "_" + vn++;
        this[e] = true;
        return e
    }});
    x.ajaxPrefilter("json jsonp", function (n, i, r) {
        var o, s, a, u = n.jsonp !== false && (Bn.test(n.url) ? "url" : typeof n.data === "string" && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Bn.test(n.data) && "data");
        if (u || n.dataTypes[0] === "jsonp") {
            o = n.jsonpCallback = x.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback;
            if (u) {
                n[u] = n[u].replace(Bn, "$1" + o)
            } else if (n.jsonp !== false) {
                n.url += (bn.test(n.url) ? "&" : "?") + n.jsonp + "=" + o
            }
            n.converters["script json"] = function () {
                if (!a) {
                    x.error(o + " was not called")
                }
                return a[0]
            };
            n.dataTypes[0] = "json";
            s = e[o];
            e[o] = function () {
                a = arguments
            };
            r.always(function () {
                e[o] = s;
                if (n[o]) {
                    n.jsonpCallback = i.jsonpCallback;
                    Fn.push(o)
                }
                if (a && x.isFunction(s)) {
                    s(a[0])
                }
                a = s = t
            });
            return"script"
        }
    });
    var Pn, Rn, Wn = 0, $n = e.ActiveXObject && function () {
        var e;
        for (e in Pn) {
            Pn[e](t, true)
        }
    };

    function In() {
        try {
            return new e.XMLHttpRequest
        } catch (t) {
        }
    }

    function zn() {
        try {
            return new e.ActiveXObject("Microsoft.XMLHTTP")
        } catch (t) {
        }
    }

    x.ajaxSettings.xhr = e.ActiveXObject ? function () {
        return!this.isLocal && In() || zn()
    } : In;
    Rn = x.ajaxSettings.xhr();
    x.support.cors = !!Rn && "withCredentials"in Rn;
    Rn = x.support.ajax = !!Rn;
    if (Rn) {
        x.ajaxTransport(function (n) {
            if (!n.crossDomain || x.support.cors) {
                var i;
                return{send: function (r, o) {
                    var s, a, u = n.xhr();
                    if (n.username) {
                        u.open(n.type, n.url, n.async, n.username, n.password)
                    } else {
                        u.open(n.type, n.url, n.async)
                    }
                    if (n.xhrFields) {
                        for (a in n.xhrFields) {
                            u[a] = n.xhrFields[a]
                        }
                    }
                    if (n.mimeType && u.overrideMimeType) {
                        u.overrideMimeType(n.mimeType)
                    }
                    if (!n.crossDomain && !r["X-Requested-With"]) {
                        r["X-Requested-With"] = "XMLHttpRequest"
                    }
                    try {
                        for (a in r) {
                            u.setRequestHeader(a, r[a])
                        }
                    } catch (l) {
                    }
                    u.send(n.hasContent && n.data || null);
                    i = function (e, r) {
                        var a, l, f, c;
                        try {
                            if (i && (r || u.readyState === 4)) {
                                i = t;
                                if (s) {
                                    u.onreadystatechange = x.noop;
                                    if ($n) {
                                        delete Pn[s]
                                    }
                                }
                                if (r) {
                                    if (u.readyState !== 4) {
                                        u.abort()
                                    }
                                } else {
                                    c = {};
                                    a = u.status;
                                    l = u.getAllResponseHeaders();
                                    if (typeof u.responseText === "string") {
                                        c.text = u.responseText
                                    }
                                    try {
                                        f = u.statusText
                                    } catch (p) {
                                        f = ""
                                    }
                                    if (!a && n.isLocal && !n.crossDomain) {
                                        a = c.text ? 200 : 404
                                    } else if (a === 1223) {
                                        a = 204
                                    }
                                }
                            }
                        } catch (d) {
                            if (!r) {
                                o(-1, d)
                            }
                        }
                        if (c) {
                            o(a, f, c, l)
                        }
                    };
                    if (!n.async) {
                        i()
                    } else if (u.readyState === 4) {
                        setTimeout(i)
                    } else {
                        s = ++Wn;
                        if ($n) {
                            if (!Pn) {
                                Pn = {};
                                x(e).unload($n)
                            }
                            Pn[s] = i
                        }
                        u.onreadystatechange = i
                    }
                }, abort: function () {
                    if (i) {
                        i(t, true)
                    }
                }}
            }
        })
    }
    var Xn, Un, Vn = /^(?:toggle|show|hide)$/, Yn = new RegExp("^(?:([+-])=|)(" + w + ")([a-z%]*)$", "i"), Jn = /queueHooks$/, Gn = [ni], Qn = {"*": [function (e, t) {
        var n = this.createTween(e, t), i = n.cur(), r = Yn.exec(t), o = r && r[3] || (x.cssNumber[e] ? "" : "px"), s = (x.cssNumber[e] || o !== "px" && +i) && Yn.exec(x.css(n.elem, e)), a = 1, u = 20;
        if (s && s[3] !== o) {
            o = o || s[3];
            r = r || [];
            s = +i || 1;
            do {
                a = a || ".5";
                s = s / a;
                x.style(n.elem, e, s + o)
            } while (a !== (a = n.cur() / i) && a !== 1 && --u)
        }
        if (r) {
            s = n.start = +s || +i || 0;
            n.unit = o;
            n.end = r[1] ? s + (r[1] + 1) * r[2] : +r[2]
        }
        return n
    }]};

    function Kn() {
        setTimeout(function () {
            Xn = t
        });
        return Xn = x.now()
    }

    function Zn(e, t, n) {
        var i, r = (Qn[t] || []).concat(Qn["*"]), o = 0, s = r.length;
        for (; o < s; o++) {
            if (i = r[o].call(n, t, e)) {
                return i
            }
        }
    }

    function ei(e, t, n) {
        var i, r, o = 0, s = Gn.length, a = x.Deferred().always(function () {
            delete u.elem
        }), u = function () {
            if (r) {
                return false
            }
            var t = Xn || Kn(), n = Math.max(0, l.startTime + l.duration - t), i = n / l.duration || 0, o = 1 - i, s = 0, u = l.tweens.length;
            for (; s < u; s++) {
                l.tweens[s].run(o)
            }
            a.notifyWith(e, [l, o, n]);
            if (o < 1 && u) {
                return n
            } else {
                a.resolveWith(e, [l]);
                return false
            }
        }, l = a.promise({elem: e, props: x.extend({}, t), opts: x.extend(true, {specialEasing: {}}, n), originalProperties: t, originalOptions: n, startTime: Xn || Kn(), duration: n.duration, tweens: [], createTween: function (t, n) {
            var i = x.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
            l.tweens.push(i);
            return i
        }, stop: function (t) {
            var n = 0, i = t ? l.tweens.length : 0;
            if (r) {
                return this
            }
            r = true;
            for (; n < i; n++) {
                l.tweens[n].run(1)
            }
            if (t) {
                a.resolveWith(e, [l, t])
            } else {
                a.rejectWith(e, [l, t])
            }
            return this
        }}), f = l.props;
        ti(f, l.opts.specialEasing);
        for (; o < s; o++) {
            i = Gn[o].call(l, e, f, l.opts);
            if (i) {
                return i
            }
        }
        x.map(f, Zn, l);
        if (x.isFunction(l.opts.start)) {
            l.opts.start.call(e, l)
        }
        x.fx.timer(x.extend(u, {elem: e, anim: l, queue: l.opts.queue}));
        return l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always)
    }

    function ti(e, t) {
        var n, i, r, o, s;
        for (n in e) {
            i = x.camelCase(n);
            r = t[i];
            o = e[n];
            if (x.isArray(o)) {
                r = o[1];
                o = e[n] = o[0]
            }
            if (n !== i) {
                e[i] = o;
                delete e[n]
            }
            s = x.cssHooks[i];
            if (s && "expand"in s) {
                o = s.expand(o);
                delete e[i];
                for (n in o) {
                    if (!(n in e)) {
                        e[n] = o[n];
                        t[n] = r
                    }
                }
            } else {
                t[i] = r
            }
        }
    }

    x.Animation = x.extend(ei, {tweener: function (e, t) {
        if (x.isFunction(e)) {
            t = e;
            e = ["*"]
        } else {
            e = e.split(" ")
        }
        var n, i = 0, r = e.length;
        for (; i < r; i++) {
            n = e[i];
            Qn[n] = Qn[n] || [];
            Qn[n].unshift(t)
        }
    }, prefilter: function (e, t) {
        if (t) {
            Gn.unshift(e)
        } else {
            Gn.push(e)
        }
    }});
    function ni(e, t, n) {
        var i, r, o, s, a, u, l = this, f = {}, c = e.style, p = e.nodeType && nn(e), d = x._data(e, "fxshow");
        if (!n.queue) {
            a = x._queueHooks(e, "fx");
            if (a.unqueued == null) {
                a.unqueued = 0;
                u = a.empty.fire;
                a.empty.fire = function () {
                    if (!a.unqueued) {
                        u()
                    }
                }
            }
            a.unqueued++;
            l.always(function () {
                l.always(function () {
                    a.unqueued--;
                    if (!x.queue(e, "fx").length) {
                        a.empty.fire()
                    }
                })
            })
        }
        if (e.nodeType === 1 && ("height"in t || "width"in t)) {
            n.overflow = [c.overflow, c.overflowX, c.overflowY];
            if (x.css(e, "display") === "inline" && x.css(e, "float") === "none") {
                if (!x.support.inlineBlockNeedsLayout || un(e.nodeName) === "inline") {
                    c.display = "inline-block"
                } else {
                    c.zoom = 1
                }
            }
        }
        if (n.overflow) {
            c.overflow = "hidden";
            if (!x.support.shrinkWrapBlocks) {
                l.always(function () {
                    c.overflow = n.overflow[0];
                    c.overflowX = n.overflow[1];
                    c.overflowY = n.overflow[2]
                })
            }
        }
        for (i in t) {
            r = t[i];
            if (Vn.exec(r)) {
                delete t[i];
                o = o || r === "toggle";
                if (r === (p ? "hide" : "show")) {
                    continue
                }
                f[i] = d && d[i] || x.style(e, i)
            }
        }
        if (!x.isEmptyObject(f)) {
            if (d) {
                if ("hidden"in d) {
                    p = d.hidden
                }
            } else {
                d = x._data(e, "fxshow", {})
            }
            if (o) {
                d.hidden = !p
            }
            if (p) {
                x(e).show()
            } else {
                l.done(function () {
                    x(e).hide()
                })
            }
            l.done(function () {
                var t;
                x._removeData(e, "fxshow");
                for (t in f) {
                    x.style(e, t, f[t])
                }
            });
            for (i in f) {
                s = Zn(p ? d[i] : 0, i, l);
                if (!(i in d)) {
                    d[i] = s.start;
                    if (p) {
                        s.end = s.start;
                        s.start = i === "width" || i === "height" ? 1 : 0
                    }
                }
            }
        }
    }

    function ii(e, t, n, i, r) {
        return new ii.prototype.init(e, t, n, i, r)
    }

    x.Tween = ii;
    ii.prototype = {constructor: ii, init: function (e, t, n, i, r, o) {
        this.elem = e;
        this.prop = n;
        this.easing = r || "swing";
        this.options = t;
        this.start = this.now = this.cur();
        this.end = i;
        this.unit = o || (x.cssNumber[n] ? "" : "px")
    }, cur: function () {
        var e = ii.propHooks[this.prop];
        return e && e.get ? e.get(this) : ii.propHooks._default.get(this)
    }, run: function (e) {
        var t, n = ii.propHooks[this.prop];
        if (this.options.duration) {
            this.pos = t = x.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration)
        } else {
            this.pos = t = e
        }
        this.now = (this.end - this.start) * t + this.start;
        if (this.options.step) {
            this.options.step.call(this.elem, this.now, this)
        }
        if (n && n.set) {
            n.set(this)
        } else {
            ii.propHooks._default.set(this)
        }
        return this
    }};
    ii.prototype.init.prototype = ii.prototype;
    ii.propHooks = {_default: {get: function (e) {
        var t;
        if (e.elem[e.prop] != null && (!e.elem.style || e.elem.style[e.prop] == null)) {
            return e.elem[e.prop]
        }
        t = x.css(e.elem, e.prop, "");
        return!t || t === "auto" ? 0 : t
    }, set: function (e) {
        if (x.fx.step[e.prop]) {
            x.fx.step[e.prop](e)
        } else if (e.elem.style && (e.elem.style[x.cssProps[e.prop]] != null || x.cssHooks[e.prop])) {
            x.style(e.elem, e.prop, e.now + e.unit)
        } else {
            e.elem[e.prop] = e.now
        }
    }}};
    ii.propHooks.scrollTop = ii.propHooks.scrollLeft = {set: function (e) {
        if (e.elem.nodeType && e.elem.parentNode) {
            e.elem[e.prop] = e.now
        }
    }};
    x.each(["toggle", "show", "hide"], function (e, t) {
        var n = x.fn[t];
        x.fn[t] = function (e, i, r) {
            return e == null || typeof e === "boolean" ? n.apply(this, arguments) : this.animate(ri(t, true), e, i, r)
        }
    });
    x.fn.extend({fadeTo: function (e, t, n, i) {
        return this.filter(nn).css("opacity", 0).show().end().animate({opacity: t}, e, n, i)
    }, animate: function (e, t, n, i) {
        var r = x.isEmptyObject(e), o = x.speed(t, n, i), s = function () {
            var t = ei(this, x.extend({}, e), o);
            if (r || x._data(this, "finish")) {
                t.stop(true)
            }
        };
        s.finish = s;
        return r || o.queue === false ? this.each(s) : this.queue(o.queue, s)
    }, stop: function (e, n, i) {
        var r = function (e) {
            var t = e.stop;
            delete e.stop;
            t(i)
        };
        if (typeof e !== "string") {
            i = n;
            n = e;
            e = t
        }
        if (n && e !== false) {
            this.queue(e || "fx", [])
        }
        return this.each(function () {
            var t = true, n = e != null && e + "queueHooks", o = x.timers, s = x._data(this);
            if (n) {
                if (s[n] && s[n].stop) {
                    r(s[n])
                }
            } else {
                for (n in s) {
                    if (s[n] && s[n].stop && Jn.test(n)) {
                        r(s[n])
                    }
                }
            }
            for (n = o.length; n--;) {
                if (o[n].elem === this && (e == null || o[n].queue === e)) {
                    o[n].anim.stop(i);
                    t = false;
                    o.splice(n, 1)
                }
            }
            if (t || !i) {
                x.dequeue(this, e)
            }
        })
    }, finish: function (e) {
        if (e !== false) {
            e = e || "fx"
        }
        return this.each(function () {
            var t, n = x._data(this), i = n[e + "queue"], r = n[e + "queueHooks"], o = x.timers, s = i ? i.length : 0;
            n.finish = true;
            x.queue(this, e, []);
            if (r && r.stop) {
                r.stop.call(this, true)
            }
            for (t = o.length; t--;) {
                if (o[t].elem === this && o[t].queue === e) {
                    o[t].anim.stop(true);
                    o.splice(t, 1)
                }
            }
            for (t = 0; t < s; t++) {
                if (i[t] && i[t].finish) {
                    i[t].finish.call(this)
                }
            }
            delete n.finish
        })
    }});
    function ri(e, t) {
        var n, i = {height: e}, r = 0;
        t = t ? 1 : 0;
        for (; r < 4; r += 2 - t) {
            n = Zt[r];
            i["margin" + n] = i["padding" + n] = e
        }
        if (t) {
            i.opacity = i.width = e
        }
        return i
    }

    x.each({slideDown: ri("show"), slideUp: ri("hide"), slideToggle: ri("toggle"), fadeIn: {opacity: "show"}, fadeOut: {opacity: "hide"}, fadeToggle: {opacity: "toggle"}}, function (e, t) {
        x.fn[e] = function (e, n, i) {
            return this.animate(t, e, n, i)
        }
    });
    x.speed = function (e, t, n) {
        var i = e && typeof e === "object" ? x.extend({}, e) : {complete: n || !n && t || x.isFunction(e) && e, duration: e, easing: n && t || t && !x.isFunction(t) && t};
        i.duration = x.fx.off ? 0 : typeof i.duration === "number" ? i.duration : i.duration in x.fx.speeds ? x.fx.speeds[i.duration] : x.fx.speeds._default;
        if (i.queue == null || i.queue === true) {
            i.queue = "fx"
        }
        i.old = i.complete;
        i.complete = function () {
            if (x.isFunction(i.old)) {
                i.old.call(this)
            }
            if (i.queue) {
                x.dequeue(this, i.queue)
            }
        };
        return i
    };
    x.easing = {linear: function (e) {
        return e
    }, swing: function (e) {
        return.5 - Math.cos(e * Math.PI) / 2
    }};
    x.timers = [];
    x.fx = ii.prototype.init;
    x.fx.tick = function () {
        var e, n = x.timers, i = 0;
        Xn = x.now();
        for (; i < n.length; i++) {
            e = n[i];
            if (!e() && n[i] === e) {
                n.splice(i--, 1)
            }
        }
        if (!n.length) {
            x.fx.stop()
        }
        Xn = t
    };
    x.fx.timer = function (e) {
        if (e() && x.timers.push(e)) {
            x.fx.start()
        }
    };
    x.fx.interval = 13;
    x.fx.start = function () {
        if (!Un) {
            Un = setInterval(x.fx.tick, x.fx.interval)
        }
    };
    x.fx.stop = function () {
        clearInterval(Un);
        Un = null
    };
    x.fx.speeds = {slow: 600, fast: 200, _default: 400};
    x.fx.step = {};
    if (x.expr && x.expr.filters) {
        x.expr.filters.animated = function (e) {
            return x.grep(x.timers, function (t) {
                return e === t.elem
            }).length
        }
    }
    x.fn.offset = function (e) {
        if (arguments.length) {
            return e === t ? this : this.each(function (t) {
                x.offset.setOffset(this, e, t)
            })
        }
        var n, i, o = {top: 0, left: 0}, s = this[0], a = s && s.ownerDocument;
        if (!a) {
            return
        }
        n = a.documentElement;
        if (!x.contains(n, s)) {
            return o
        }
        if (typeof s.getBoundingClientRect !== r) {
            o = s.getBoundingClientRect()
        }
        i = oi(a);
        return{top: o.top + (i.pageYOffset || n.scrollTop) - (n.clientTop || 0), left: o.left + (i.pageXOffset || n.scrollLeft) - (n.clientLeft || 0)}
    };
    x.offset = {setOffset: function (e, t, n) {
        var i = x.css(e, "position");
        if (i === "static") {
            e.style.position = "relative"
        }
        var r = x(e), o = r.offset(), s = x.css(e, "top"), a = x.css(e, "left"), u = (i === "absolute" || i === "fixed") && x.inArray("auto", [s, a]) > -1, l = {}, f = {}, c, p;
        if (u) {
            f = r.position();
            c = f.top;
            p = f.left
        } else {
            c = parseFloat(s) || 0;
            p = parseFloat(a) || 0
        }
        if (x.isFunction(t)) {
            t = t.call(e, n, o)
        }
        if (t.top != null) {
            l.top = t.top - o.top + c
        }
        if (t.left != null) {
            l.left = t.left - o.left + p
        }
        if ("using"in t) {
            t.using.call(e, l)
        } else {
            r.css(l)
        }
    }};
    x.fn.extend({position: function () {
        if (!this[0]) {
            return
        }
        var e, t, n = {top: 0, left: 0}, i = this[0];
        if (x.css(i, "position") === "fixed") {
            t = i.getBoundingClientRect()
        } else {
            e = this.offsetParent();
            t = this.offset();
            if (!x.nodeName(e[0], "html")) {
                n = e.offset()
            }
            n.top += x.css(e[0], "borderTopWidth", true);
            n.left += x.css(e[0], "borderLeftWidth", true)
        }
        return{top: t.top - n.top - x.css(i, "marginTop", true), left: t.left - n.left - x.css(i, "marginLeft", true)}
    }, offsetParent: function () {
        return this.map(function () {
            var e = this.offsetParent || a;
            while (e && !x.nodeName(e, "html") && x.css(e, "position") === "static") {
                e = e.offsetParent
            }
            return e || a
        })
    }});
    x.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function (e, n) {
        var i = /Y/.test(n);
        x.fn[e] = function (r) {
            return x.access(this, function (e, r, o) {
                var s = oi(e);
                if (o === t) {
                    return s ? n in s ? s[n] : s.document.documentElement[r] : e[r]
                }
                if (s) {
                    s.scrollTo(!i ? o : x(s).scrollLeft(), i ? o : x(s).scrollTop())
                } else {
                    e[r] = o
                }
            }, e, r, arguments.length, null)
        }
    });
    function oi(e) {
        return x.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : false
    }

    x.each({Height: "height", Width: "width"}, function (e, n) {
        x.each({padding: "inner" + e, content: n, "": "outer" + e}, function (i, r) {
            x.fn[r] = function (r, o) {
                var s = arguments.length && (i || typeof r !== "boolean"), a = i || (r === true || o === true ? "margin" : "border");
                return x.access(this, function (n, i, r) {
                    var o;
                    if (x.isWindow(n)) {
                        return n.document.documentElement["client" + e]
                    }
                    if (n.nodeType === 9) {
                        o = n.documentElement;
                        return Math.max(n.body["scroll" + e], o["scroll" + e], n.body["offset" + e], o["offset" + e], o["client" + e])
                    }
                    return r === t ? x.css(n, i, a) : x.style(n, i, r, a)
                }, n, s ? r : t, s, null)
            }
        })
    });
    x.fn.size = function () {
        return this.length
    };
    x.fn.andSelf = x.fn.addBack;
    if (typeof module === "object" && module && typeof module.exports === "object") {
        module.exports = x
    } else {
        e.jQuery = e.$ = x;
        if (typeof define === "function" && define.amd) {
            define("jquery", [], function () {
                return x
            })
        }
    }
}(window);
+function (t) {
    "use strict";
    var e = function (e, i) {
        this.options = i;
        this.$element = t(e);
        this.$backdrop = this.isShown = null;
        if (this.options.remote)this.$element.load(this.options.remote)
    };
    e.DEFAULTS = {backdrop: true, keyboard: true, show: true};
    e.prototype.toggle = function (t) {
        return this[!this.isShown ? "show" : "hide"](t)
    };
    e.prototype.show = function (e) {
        var i = this;
        var o = t.Event("show.bs.modal", {relatedTarget: e});
        this.$element.trigger(o);
        if (this.isShown || o.isDefaultPrevented())return;
        this.isShown = true;
        this.escape();
        this.$element.on("click.dismiss.modal", '[data-dismiss="bs-modal"]', t.proxy(this.hide, this));
        this.backdrop(function () {
            var o = t.support.transition && i.$element.hasClass("fade");
            if (!i.$element.parent().length) {
                i.$element.appendTo(document.body)
            }
            i.$element.show();
            if (o) {
                i.$element[0].offsetWidth
            }
            i.$element.addClass("in").attr("aria-hidden", false);
            i.enforceFocus();
            var n = t.Event("shown.bs.modal", {relatedTarget: e});
            o ? i.$element.find(".bs-modal-dialog").one(t.support.transition.end, function () {
                i.$element.focus().trigger(n)
            }).emulateTransitionEnd(300) : i.$element.focus().trigger(n)
        })
    };
    e.prototype.hide = function (e) {
        if (e)e.preventDefault();
        e = t.Event("hide.bs.modal");
        this.$element.trigger(e);
        if (!this.isShown || e.isDefaultPrevented())return;
        this.isShown = false;
        this.escape();
        t(document).off("focusin.bs.modal");
        this.$element.removeClass("in").attr("aria-hidden", true).off("click.dismiss.modal");
        t.support.transition && this.$element.hasClass("fade") ? this.$element.one(t.support.transition.end, t.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal()
    };
    e.prototype.enforceFocus = function () {
        t(document).off("focusin.bs.modal").on("focusin.bs.modal", t.proxy(function (t) {
            if (this.$element[0] !== t.target && !this.$element.has(t.target).length) {
                this.$element.focus()
            }
        }, this))
    };
    e.prototype.escape = function () {
        if (this.isShown && this.options.keyboard) {
            this.$element.on("keyup.dismiss.bs.modal", t.proxy(function (t) {
                t.which == 27 && this.hide()
            }, this))
        } else if (!this.isShown) {
            this.$element.off("keyup.dismiss.bs.modal")
        }
    };
    e.prototype.hideModal = function () {
        var t = this;
        this.$element.hide();
        this.backdrop(function () {
            t.removeBackdrop();
            t.$element.trigger("hidden.bs.modal")
        })
    };
    e.prototype.removeBackdrop = function () {
        this.$backdrop && this.$backdrop.remove();
        this.$backdrop = null
    };
    e.prototype.backdrop = function (e) {
        var i = this;
        var o = this.$element.hasClass("fade") ? "fade" : "";
        if (this.isShown && this.options.backdrop) {
            var n = t.support.transition && o;
            this.$backdrop = t('<div class="bs-modal-backdrop ' + o + '" />').appendTo(document.body);
            this.$element.on("click.dismiss.modal", t.proxy(function (t) {
                if (t.target !== t.currentTarget)return;
                this.options.backdrop == "static" ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this)
            }, this));
            if (n)this.$backdrop[0].offsetWidth;
            this.$backdrop.addClass("in");
            if (!e)return;
            n ? this.$backdrop.one(t.support.transition.end, e).emulateTransitionEnd(150) : e()
        } else if (!this.isShown && this.$backdrop) {
            this.$backdrop.removeClass("in");
            t.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(t.support.transition.end, e).emulateTransitionEnd(150) : e()
        } else if (e) {
            e()
        }
    };
    var i = t.fn.modal;
    t.fn.modal = function (i, o) {
        return this.each(function () {
            var n = t(this);
            var s = n.data("bs.modal");
            var r = t.extend({}, e.DEFAULTS, n.data(), typeof i == "object" && i);
            if (!s)n.data("bs.modal", s = new e(this, r));
            if (typeof i == "string")s[i](o); else if (r.show)s.show(o)
        })
    };
    t.fn.modal.Constructor = e;
    t.fn.modal.noConflict = function () {
        t.fn.modal = i;
        return this
    };
    t(document).on("click.bs.modal.data-api", '[data-toggle="bs-modal"]', function (e) {
        var i = t(this);
        var o = i.attr("href");
        var n = t(i.attr("data-target") || o && o.replace(/.*(?=#[^\s]+$)/, ""));
        var s = n.data("modal") ? "toggle" : t.extend({remote: !/#/.test(o) && o}, n.data(), i.data());
        e.preventDefault();
        n.modal(s, this).one("hide", function () {
            i.is(":visible") && i.focus()
        })
    });
    t(document).on("show.bs.modal", ".bs-modal", function () {
        t(document.body).addClass("bs-modal-open")
    }).on("hidden.bs.modal", ".bs-modal", function () {
        t(document.body).removeClass("bs-modal-open")
    })
}(window.jQuery);
+function (t) {
    "use strict";
    var e = function (t, e) {
        this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null;
        this.init("tooltip", t, e)
    };
    e.DEFAULTS = {animation: true, placement: "top", selector: false, template: '<div class="bs-tooltip"><div class="bs-tooltip-arrow"></div><div class="bs-tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: false, container: false};
    e.prototype.init = function (e, i, o) {
        this.enabled = true;
        this.type = e;
        this.$element = t(i);
        this.options = this.getOptions(o);
        var n = this.options.trigger.split(" ");
        for (var s = n.length; s--;) {
            var r = n[s];
            if (r == "click") {
                this.$element.on("click." + this.type, this.options.selector, t.proxy(this.toggle, this))
            } else if (r != "manual") {
                var a = r == "hover" ? "mouseenter" : "focus";
                var h = r == "hover" ? "mouseleave" : "blur";
                this.$element.on(a + "." + this.type, this.options.selector, t.proxy(this.enter, this));
                this.$element.on(h + "." + this.type, this.options.selector, t.proxy(this.leave, this))
            }
        }
        this.options.selector ? this._options = t.extend({}, this.options, {trigger: "manual", selector: ""}) : this.fixTitle()
    };
    e.prototype.getDefaults = function () {
        return e.DEFAULTS
    };
    e.prototype.getOptions = function (e) {
        e = t.extend({}, this.getDefaults(), this.$element.data(), e);
        if (e.delay && typeof e.delay == "number") {
            e.delay = {show: e.delay, hide: e.delay}
        }
        return e
    };
    e.prototype.getDelegateOptions = function () {
        var e = {};
        var i = this.getDefaults();
        this._options && t.each(this._options, function (t, o) {
            if (i[t] != o)e[t] = o
        });
        return e
    };
    e.prototype.enter = function (e) {
        var i = e instanceof this.constructor ? e : t(e.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
        clearTimeout(i.timeout);
        i.hoverState = "in";
        if (!i.options.delay || !i.options.delay.show)return i.show();
        i.timeout = setTimeout(function () {
            if (i.hoverState == "in")i.show()
        }, i.options.delay.show)
    };
    e.prototype.leave = function (e) {
        var i = e instanceof this.constructor ? e : t(e.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
        clearTimeout(i.timeout);
        i.hoverState = "out";
        if (!i.options.delay || !i.options.delay.hide)return i.hide();
        i.timeout = setTimeout(function () {
            if (i.hoverState == "out")i.hide()
        }, i.options.delay.hide)
    };
    e.prototype.show = function () {
        var e = t.Event("show.bs." + this.type);
        if (this.hasContent() && this.enabled) {
            this.$element.trigger(e);
            if (e.isDefaultPrevented())return;
            var i = this.tip();
            this.setContent();
            if (this.options.animation)i.addClass("fade");
            var o = typeof this.options.placement == "function" ? this.options.placement.call(this, i[0], this.$element[0]) : this.options.placement;
            var n = /\s?auto?\s?/i;
            var s = n.test(o);
            if (s)o = o.replace(n, "") || "top";
            i.detach().css({top: 0, left: 0, display: "block"}).addClass(o);
            this.options.container ? i.appendTo(this.options.container) : i.insertAfter(this.$element);
            var r = this.getPosition();
            var a = i[0].offsetWidth;
            var h = i[0].offsetHeight;
            if (s) {
                var l = this.$element.parent();
                var p = o;
                var d = document.documentElement.scrollTop || document.body.scrollTop;
                var f = this.options.container == "body" ? window.innerWidth : l.outerWidth();
                var u = this.options.container == "body" ? window.innerHeight : l.outerHeight();
                var c = this.options.container == "body" ? 0 : l.offset().left;
                o = o == "bottom" && r.top + r.height + h - d > u ? "top" : o == "top" && r.top - d - h < 0 ? "bottom" : o == "right" && r.right + a > f ? "left" : o == "left" && r.left - a < c ? "right" : o;
                i.removeClass(p).addClass(o)
            }
            var m = this.getCalculatedOffset(o, r, a, h);
            this.applyPlacement(m, o);
            this.$element.trigger("shown.bs." + this.type)
        }
    };
    e.prototype.applyPlacement = function (t, e) {
        var i;
        var o = this.tip();
        var n = o[0].offsetWidth;
        var s = o[0].offsetHeight;
        var r = parseInt(o.css("margin-top"), 10);
        var a = parseInt(o.css("margin-left"), 10);
        if (isNaN(r))r = 0;
        if (isNaN(a))a = 0;
        t.top = t.top + r;
        t.left = t.left + a;
        o.offset(t).addClass("in");
        var h = o[0].offsetWidth;
        var l = o[0].offsetHeight;
        if (e == "top" && l != s) {
            i = true;
            t.top = t.top + s - l
        }
        if (/bottom|top/.test(e)) {
            var p = 0;
            if (t.left < 0) {
                p = t.left * -2;
                t.left = 0;
                o.offset(t);
                h = o[0].offsetWidth;
                l = o[0].offsetHeight
            }
            this.replaceArrow(p - n + h, h, "left")
        } else {
            this.replaceArrow(l - s, l, "top")
        }
        if (i)o.offset(t)
    };
    e.prototype.replaceArrow = function (t, e, i) {
        this.arrow().css(i, t ? 50 * (1 - t / e) + "%" : "")
    };
    e.prototype.setContent = function () {
        var t = this.tip();
        var e = this.getTitle();
        t.find(".bs-tooltip-inner")[this.options.html ? "html" : "text"](e);
        t.removeClass("fade in top bottom left right")
    };
    e.prototype.hide = function () {
        var e = this;
        var i = this.tip();
        var o = t.Event("hide.bs." + this.type);

        function n() {
            if (e.hoverState != "in")i.detach()
        }

        this.$element.trigger(o);
        if (o.isDefaultPrevented())return;
        i.removeClass("in");
        t.support.transition && this.$tip.hasClass("fade") ? i.one(t.support.transition.end, n).emulateTransitionEnd(150) : n();
        this.$element.trigger("hidden.bs." + this.type);
        return this
    };
    e.prototype.fixTitle = function () {
        var t = this.$element;
        if (t.attr("title") || typeof t.attr("data-original-title") != "string") {
            t.attr("data-original-title", t.attr("title") || "").attr("title", "")
        }
    };
    e.prototype.hasContent = function () {
        return this.getTitle()
    };
    e.prototype.getPosition = function () {
        var e = this.$element[0];
        return t.extend({}, typeof e.getBoundingClientRect == "function" ? e.getBoundingClientRect() : {width: e.offsetWidth, height: e.offsetHeight}, this.$element.offset())
    };
    e.prototype.getCalculatedOffset = function (t, e, i, o) {
        return t == "bottom" ? {top: e.top + e.height, left: e.left + e.width / 2 - i / 2} : t == "top" ? {top: e.top - o, left: e.left + e.width / 2 - i / 2} : t == "left" ? {top: e.top + e.height / 2 - o / 2, left: e.left - i} : {top: e.top + e.height / 2 - o / 2, left: e.left + e.width}
    };
    e.prototype.getTitle = function () {
        var t;
        var e = this.$element;
        var i = this.options;
        t = e.attr("data-original-title") || (typeof i.title == "function" ? i.title.call(e[0]) : i.title);
        return t
    };
    e.prototype.tip = function () {
        return this.$tip = this.$tip || t(this.options.template)
    };
    e.prototype.arrow = function () {
        return this.$arrow = this.$arrow || this.tip().find(".bs-tooltip-arrow")
    };
    e.prototype.validate = function () {
        if (!this.$element[0].parentNode) {
            this.hide();
            this.$element = null;
            this.options = null
        }
    };
    e.prototype.enable = function () {
        this.enabled = true
    };
    e.prototype.disable = function () {
        this.enabled = false
    };
    e.prototype.toggleEnabled = function () {
        this.enabled = !this.enabled
    };
    e.prototype.toggle = function (e) {
        var i = e ? t(e.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type) : this;
        i.tip().hasClass("in") ? i.leave(i) : i.enter(i)
    };
    e.prototype.destroy = function () {
        this.hide().$element.off("." + this.type).removeData("bs." + this.type)
    };
    var i = t.fn.tooltip;
    t.fn.tooltip = function (i) {
        return this.each(function () {
            var o = t(this);
            var n = o.data("bs.tooltip");
            var s = typeof i == "object" && i;
            if (!n)o.data("bs.tooltip", n = new e(this, s));
            if (typeof i == "string")n[i]()
        })
    };
    t.fn.tooltip.Constructor = e;
    t.fn.tooltip.noConflict = function () {
        t.fn.tooltip = i;
        return this
    }
}(window.jQuery);
+function (t) {
    "use strict";
    function e() {
        var t = document.createElement("bootstrap");
        var e = {WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend"};
        for (var i in e) {
            if (t.style[i] !== undefined) {
                return{end: e[i]}
            }
        }
    }

    t.fn.emulateTransitionEnd = function (e) {
        var i = false, o = this;
        t(this).one(t.support.transition.end, function () {
            i = true
        });
        var n = function () {
            if (!i)t(o).trigger(t.support.transition.end)
        };
        setTimeout(n, e);
        return this
    };
    t(function () {
        t.support.transition = e()
    })
}(window.jQuery);
!function (e, a, t) {
    var r = Object.prototype.toString.call(e.operamini) == "[object OperaMini]";
    var l = "placeholder"in a.createElement("input") && !r;
    var o = "placeholder"in a.createElement("textarea") && !r;
    var i = t.fn;
    var d = t.valHooks;
    var c = t.propHooks;
    var n;
    var u;
    if (l && o) {
        u = i.placeholder = function () {
            return this
        };
        u.input = u.textarea = true
    } else {
        u = i.placeholder = function () {
            var e = this;
            e.filter((l ? "textarea" : ":input") + "[placeholder]").not(".placeholder").bind({"focus.placeholder": h, "blur.placeholder": s}).data("placeholder-enabled", true).trigger("blur.placeholder");
            return e
        };
        u.input = l;
        u.textarea = o;
        n = {get: function (e) {
            var a = t(e);
            var r = a.data("placeholder-password");
            if (r) {
                return r[0].value
            }
            return a.data("placeholder-enabled") && a.hasClass("placeholder") ? "" : e.value
        }, set: function (e, a) {
            var r = t(e);
            var l = r.data("placeholder-password");
            if (l) {
                return l[0].value = a
            }
            if (!r.data("placeholder-enabled")) {
                return e.value = a
            }
            if (a == "") {
                e.value = a;
                if (e != v()) {
                    s.call(e)
                }
            } else if (r.hasClass("placeholder")) {
                h.call(e, true, a) || (e.value = a)
            } else {
                e.value = a
            }
            return r
        }};
        if (!l) {
            d.input = n;
            c.value = n
        }
        if (!o) {
            d.textarea = n;
            c.value = n
        }
        t(function () {
            t(a).delegate("form", "submit.placeholder", function () {
                var e = t(".placeholder", this).each(h);
                setTimeout(function () {
                    e.each(s)
                }, 10)
            })
        });
        t(e).bind("beforeunload.placeholder", function () {
            t(".placeholder").each(function () {
                this.value = ""
            })
        })
    }
    function p(e) {
        var a = {};
        var r = /^jQuery\d+$/;
        t.each(e.attributes, function (e, t) {
            if (t.specified && !r.test(t.name)) {
                a[t.name] = t.value
            }
        });
        return a
    }

    function h(e, a) {
        var r = this;
        var l = t(r);
        if (r.value == l.attr("placeholder") && l.hasClass("placeholder")) {
            if (l.data("placeholder-password")) {
                l = l.hide().next().show().attr("id", l.removeAttr("id").data("placeholder-id"));
                if (e === true) {
                    return l[0].value = a
                }
                l.focus()
            } else {
                r.value = "";
                l.removeClass("placeholder");
                r == v() && r.select()
            }
        }
    }

    function s() {
        var e;
        var a = this;
        var r = t(a);
        var l = this.id;
        if (a.value == "") {
            if (a.type == "password") {
                if (!r.data("placeholder-textinput")) {
                    try {
                        e = r.clone().attr({type: "text"})
                    } catch (o) {
                        e = t("<input>").attr(t.extend(p(this), {type: "text"}))
                    }
                    e.removeAttr("name").data({"placeholder-password": r, "placeholder-id": l}).bind("focus.placeholder", h);
                    r.data({"placeholder-textinput": e, "placeholder-id": l}).before(e)
                }
                r = r.removeAttr("id").hide().prev().attr("id", l).show()
            }
            r.addClass("placeholder");
            r[0].value = r.attr("placeholder")
        } else {
            r.removeClass("placeholder")
        }
    }

    function v() {
        try {
            return a.activeElement
        } catch (e) {
        }
    }
}(this, document, jQuery);
!function () {
    var n;
    var e = 0;
    var r = {};
    var t = +new Date + "";
    var u = /<%=([\s\S]+?)%>/g;
    var i = /($^)/;
    var f = /['\n\r\t\u2028\u2029\\]/g;
    var a = "[object Arguments]", o = "[object Array]", l = "[object Boolean]", c = "[object Date]", s = "[object Function]", p = "[object Number]", h = "[object Object]", v = "[object RegExp]", g = "[object String]";
    var y = {"boolean": false, "function": true, object: true, number: false, string: false, undefined: false};
    var m = {"\\": "\\", "'": "'", "\n": "n", "\r": "r", "	": "t", "\u2028": "u2028", "\u2029": "u2029"};
    var w = y[typeof window] && window || this;
    var _ = y[typeof exports] && exports && !exports.nodeType && exports;
    var b = y[typeof module] && module && !module.nodeType && module;
    var d = b && b.exports === _ && _;
    var j = y[typeof global] && global;
    if (j && (j.global === j || j.window === j)) {
        w = j
    }
    function x(n, e, r) {
        var t = (r || 0) - 1, u = n ? n.length : 0;
        while (++t < u) {
            if (n[t] === e) {
                return t
            }
        }
        return-1
    }

    function T(n, e) {
        var r = n.criteria, t = e.criteria, u = -1, i = r.length;
        while (++u < i) {
            var f = r[u], a = t[u];
            if (f !== a) {
                if (f > a || typeof f == "undefined") {
                    return 1
                }
                if (f < a || typeof a == "undefined") {
                    return-1
                }
            }
        }
        return n.index - e.index
    }

    function E(n) {
        return"\\" + m[n]
    }

    function A(n, e, r) {
        e || (e = 0);
        if (typeof r == "undefined") {
            r = n ? n.length : 0
        }
        var t = -1, u = r - e || 0, i = Array(u < 0 ? 0 : u);
        while (++t < u) {
            i[t] = n[e + t]
        }
        return i
    }

    var S = [];
    var O = Object.prototype;
    var k = w._;
    var N = O.toString;
    var R = RegExp("^" + String(N).replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/toString| for [^\]]+/g, ".*?") + "$");
    var I = Math.ceil, B = Math.floor, F = O.hasOwnProperty, q = S.push, D = O.propertyIsEnumerable;
    var M = ae(M = Object.create) && M, $ = ae($ = Array.isArray) && $, W = w.isFinite, z = w.isNaN, C = ae(C = Object.keys) && C, P = Math.max, U = Math.min, V = Math.random;

    function G(n) {
        return n instanceof G ? n : new H(n)
    }

    function H(n, e) {
        this.__chain__ = !!e;
        this.__wrapped__ = n
    }

    H.prototype = G.prototype;
    var J = {};
    !function () {
        var n = {0: 1, length: 1};
        J.spliceObjects = (S.splice.call(n, 0, 1), !n[0])
    }(1);
    G.templateSettings = {escape: /<%-([\s\S]+?)%>/g, evaluate: /<%([\s\S]+?)%>/g, interpolate: u, variable: ""};
    function K(n) {
        var e = n[0], r = n[2], t = n[4];

        function u() {
            if (r) {
                var n = A(r);
                q.apply(n, arguments)
            }
            if (this instanceof u) {
                var i = L(e.prototype), f = e.apply(i, n || arguments);
                return Ie(f) ? f : i
            }
            return e.apply(t, n || arguments)
        }

        return u
    }

    function L(n, e) {
        return Ie(n) ? M(n) : {}
    }

    if (!M) {
        L = function () {
            function n() {
            }

            return function (e) {
                if (Ie(e)) {
                    n.prototype = e;
                    var r = new n;
                    n.prototype = null
                }
                return r || w.Object()
            }
        }()
    }
    function Q(n, e, r) {
        if (typeof n != "function") {
            return Gr
        }
        if (typeof e == "undefined" || !("prototype"in n)) {
            return n
        }
        switch (r) {
            case 1:
                return function (r) {
                    return n.call(e, r)
                };
            case 2:
                return function (r, t) {
                    return n.call(e, r, t)
                };
            case 3:
                return function (r, t, u) {
                    return n.call(e, r, t, u)
                };
            case 4:
                return function (r, t, u, i) {
                    return n.call(e, r, t, u, i)
                }
        }
        return Ir(n, e)
    }

    function X(n) {
        var e = n[0], r = n[1], t = n[2], u = n[3], i = n[4], f = n[5];
        var a = r & 1, o = r & 2, l = r & 4, c = r & 8, s = e;

        function p() {
            var n = a ? i : this;
            if (t) {
                var h = A(t);
                q.apply(h, arguments)
            }
            if (u || l) {
                h || (h = A(arguments));
                if (u) {
                    q.apply(h, u)
                }
                if (l && h.length < f) {
                    r |= 16 & ~32;
                    return X([e, c ? r : r & ~3, h, null, i, f])
                }
            }
            h || (h = arguments);
            if (o) {
                e = n[s]
            }
            if (this instanceof p) {
                n = L(e.prototype);
                var v = e.apply(n, h);
                return Ie(v) ? v : n
            }
            return e.apply(n, h)
        }

        return p
    }

    function Y(n, e) {
        var r = -1, t = fe(), u = n ? n.length : 0, i = [];
        while (++r < u) {
            var f = n[r];
            if (t(e, f) < 0) {
                i.push(f)
            }
        }
        return i
    }

    function Z(n, e, r, t) {
        var u = (t || 0) - 1, i = n ? n.length : 0, f = [];
        while (++u < i) {
            var a = n[u];
            if (a && typeof a == "object" && typeof a.length == "number" && (ce(a) || le(a))) {
                if (!e) {
                    a = Z(a, e, r)
                }
                var o = -1, l = a.length, c = f.length;
                f.length += l;
                while (++o < l) {
                    f[c++] = a[o]
                }
            } else if (!r) {
                f.push(a)
            }
        }
        return f
    }

    function ne(n, e, t, u) {
        if (n === e) {
            return n !== 0 || 1 / n == 1 / e
        }
        var i = typeof n, f = typeof e;
        if (n === n && !(n && y[i]) && !(e && y[f])) {
            return false
        }
        if (n == null || e == null) {
            return n === e
        }
        var a = N.call(n), s = N.call(e);
        if (a != s) {
            return false
        }
        switch (a) {
            case l:
            case c:
                return+n == +e;
            case p:
                return n != +n ? e != +e : n == 0 ? 1 / n == 1 / e : n == +e;
            case v:
            case g:
                return n == String(e)
        }
        var m = a == o;
        if (!m) {
            var w = n instanceof G, _ = e instanceof G;
            if (w || _) {
                return ne(w ? n.__wrapped__ : n, _ ? e.__wrapped__ : e, t, u)
            }
            if (a != h) {
                return false
            }
            var b = n.constructor, d = e.constructor;
            if (b != d && !(Re(b) && b instanceof b && Re(d) && d instanceof d) && "constructor"in n && "constructor"in e) {
                return false
            }
        }
        t || (t = []);
        u || (u = []);
        var j = t.length;
        while (j--) {
            if (t[j] == n) {
                return u[j] == e
            }
        }
        var x = true, T = 0;
        t.push(n);
        u.push(e);
        if (m) {
            T = e.length;
            x = T == n.length;
            if (x) {
                while (T--) {
                    if (!(x = ne(n[T], e[T], t, u))) {
                        break
                    }
                }
            }
        } else {
            be(e, function (e, i, f) {
                if (F.call(f, i)) {
                    T++;
                    return!(x = F.call(n, i) && ne(n[i], e, t, u)) && r
                }
            });
            if (x) {
                be(n, function (n, e, t) {
                    if (F.call(t, e)) {
                        return!(x = --T > -1) && r
                    }
                })
            }
        }
        t.pop();
        u.pop();
        return x
    }

    function ee(n, e) {
        return n + B(V() * (e - n + 1))
    }

    function re(n, e, r) {
        var t = -1, u = fe(), i = n ? n.length : 0, f = [], a = r ? [] : f;
        while (++t < i) {
            var o = n[t], l = r ? r(o, t, n) : o;
            if (e ? !t || a[a.length - 1] !== l : u(a, l) < 0) {
                if (r) {
                    a.push(l)
                }
                f.push(o)
            }
        }
        return f
    }

    function te(n) {
        return function (e, r, t) {
            var u = {};
            r = Ur(r, t, 3);
            var i = -1, f = e ? e.length : 0;
            if (typeof f == "number") {
                while (++i < f) {
                    var a = e[i];
                    n(u, a, r(a, i, e), e)
                }
            } else {
                de(e, function (e, t, i) {
                    n(u, e, r(e, t, i), i)
                })
            }
            return u
        }
    }

    function ue(n, e, r, t, u, i) {
        var f = e & 1, a = e & 2, o = e & 4, l = e & 8, c = e & 16, s = e & 32;
        if (!a && !Re(n)) {
            throw new TypeError
        }
        if (c && !r.length) {
            e &= ~16;
            c = r = false
        }
        if (s && !t.length) {
            e &= ~32;
            s = t = false
        }
        var p = e == 1 || e === 17 ? K : X;
        return p([n, e, r, t, u, i])
    }

    function ie(n) {
        return he[n]
    }

    function fe() {
        var n = (n = G.indexOf) === wr ? x : n;
        return n
    }

    function ae(n) {
        return typeof n == "function" && R.test(n)
    }

    function oe(n) {
        return ve[n]
    }

    function le(n) {
        return n && typeof n == "object" && typeof n.length == "number" && N.call(n) == a || false
    }

    if (!le(arguments)) {
        le = function (n) {
            return n && typeof n == "object" && typeof n.length == "number" && F.call(n, "callee") && !D.call(n, "callee") || false
        }
    }
    var ce = $ || function (n) {
        return n && typeof n == "object" && typeof n.length == "number" && N.call(n) == o || false
    };
    var se = function (n) {
        var e, r = n, t = [];
        if (!r)return t;
        if (!y[typeof n])return t;
        for (e in r) {
            if (F.call(r, e)) {
                t.push(e)
            }
        }
        return t
    };
    var pe = !C ? se : function (n) {
        if (!Ie(n)) {
            return[]
        }
        return C(n)
    };
    var he = {"&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#x27;"};
    var ve = Te(he);
    var ge = RegExp("(" + pe(ve).join("|") + ")", "g"), ye = RegExp("[" + pe(he).join("") + "]", "g");

    function me(n) {
        if (!n) {
            return n
        }
        for (var e = 1, r = arguments.length; e < r; e++) {
            var t = arguments[e];
            if (t) {
                for (var u in t) {
                    n[u] = t[u]
                }
            }
        }
        return n
    }

    function we(n) {
        return Ie(n) ? ce(n) ? A(n) : me({}, n) : n
    }

    function _e(n) {
        if (!n) {
            return n
        }
        for (var e = 1, r = arguments.length; e < r; e++) {
            var t = arguments[e];
            if (t) {
                for (var u in t) {
                    if (typeof n[u] == "undefined") {
                        n[u] = t[u]
                    }
                }
            }
        }
        return n
    }

    var be = function (n, e) {
        var t, u = n, i = u;
        if (!u)return i;
        if (!y[typeof u])return i;
        for (t in u) {
            if (e(u[t], t, n) === r)return i
        }
        return i
    };
    var de = function (n, e) {
        var t, u = n, i = u;
        if (!u)return i;
        if (!y[typeof u])return i;
        for (t in u) {
            if (F.call(u, t)) {
                if (e(u[t], t, n) === r)return i
            }
        }
        return i
    };

    function je(n) {
        var e = [];
        be(n, function (n, r) {
            if (Re(n)) {
                e.push(r)
            }
        });
        return e.sort()
    }

    function xe(n, e) {
        return n ? F.call(n, e) : false
    }

    function Te(n) {
        var e = -1, r = pe(n), t = r.length, u = {};
        while (++e < t) {
            var i = r[e];
            u[n[i]] = i
        }
        return u
    }

    function Ee(n) {
        return n === true || n === false || n && typeof n == "object" && N.call(n) == l || false
    }

    function Ae(n) {
        return n && typeof n == "object" && N.call(n) == c || false
    }

    function Se(n) {
        return n && n.nodeType === 1 || false
    }

    function Oe(n) {
        if (!n) {
            return true
        }
        if (ce(n) || Me(n)) {
            return!n.length
        }
        for (var e in n) {
            if (F.call(n, e)) {
                return false
            }
        }
        return true
    }

    function ke(n, e) {
        return ne(n, e)
    }

    function Ne(n) {
        return W(n) && !z(parseFloat(n))
    }

    function Re(n) {
        return typeof n == "function"
    }

    if (Re(/x/)) {
        Re = function (n) {
            return typeof n == "function" && N.call(n) == s
        }
    }
    function Ie(n) {
        return!!(n && y[typeof n])
    }

    function Be(n) {
        return qe(n) && n != +n
    }

    function Fe(n) {
        return n === null
    }

    function qe(n) {
        return typeof n == "number" || n && typeof n == "object" && N.call(n) == p || false
    }

    function De(n) {
        return n && y[typeof n] && N.call(n) == v || false
    }

    function Me(n) {
        return typeof n == "string" || n && typeof n == "object" && N.call(n) == g || false
    }

    function $e(n) {
        return typeof n == "undefined"
    }

    function We(n) {
        var e = [];
        be(n, function (n, r) {
            e.push(r)
        });
        e = Y(e, Z(arguments, true, false, 1));
        var r = -1, t = e.length, u = {};
        while (++r < t) {
            var i = e[r];
            u[i] = n[i]
        }
        return u
    }

    function ze(n) {
        var e = -1, r = pe(n), t = r.length, u = Array(t);
        while (++e < t) {
            var i = r[e];
            u[e] = [i, n[i]]
        }
        return u
    }

    function Ce(n) {
        var e = -1, r = Z(arguments, true, false, 1), t = r.length, u = {};
        while (++e < t) {
            var i = r[e];
            if (i in n) {
                u[i] = n[i]
            }
        }
        return u
    }

    function Pe(n) {
        var e = -1, r = pe(n), t = r.length, u = Array(t);
        while (++e < t) {
            u[e] = n[r[e]]
        }
        return u
    }

    function Ue(n, e) {
        var t = fe(), u = n ? n.length : 0, i = false;
        if (u && typeof u == "number") {
            i = t(n, e) > -1
        } else {
            de(n, function (n) {
                return(i = n === e) && r
            })
        }
        return i
    }

    var Ve = te(function (n, e, r) {
        F.call(n, r) ? n[r]++ : n[r] = 1
    });

    function Ge(n, e, t) {
        var u = true;
        e = Ur(e, t, 3);
        var i = -1, f = n ? n.length : 0;
        if (typeof f == "number") {
            while (++i < f) {
                if (!(u = !!e(n[i], i, n))) {
                    break
                }
            }
        } else {
            de(n, function (n, t, i) {
                return!(u = !!e(n, t, i)) && r
            })
        }
        return u
    }

    function He(n, e, r) {
        var t = [];
        e = Ur(e, r, 3);
        var u = -1, i = n ? n.length : 0;
        if (typeof i == "number") {
            while (++u < i) {
                var f = n[u];
                if (e(f, u, n)) {
                    t.push(f)
                }
            }
        } else {
            de(n, function (n, r, u) {
                if (e(n, r, u)) {
                    t.push(n)
                }
            })
        }
        return t
    }

    function Je(n, e, t) {
        e = Ur(e, t, 3);
        var u = -1, i = n ? n.length : 0;
        if (typeof i == "number") {
            while (++u < i) {
                var f = n[u];
                if (e(f, u, n)) {
                    return f
                }
            }
        } else {
            var a;
            de(n, function (n, t, u) {
                if (e(n, t, u)) {
                    a = n;
                    return r
                }
            });
            return a
        }
    }

    function Ke(n, e) {
        return hr(n, e, true)
    }

    function Le(n, e, t) {
        var u = -1, i = n ? n.length : 0;
        e = e && typeof t == "undefined" ? e : Q(e, t, 3);
        if (typeof i == "number") {
            while (++u < i) {
                if (e(n[u], u, n) === r) {
                    break
                }
            }
        } else {
            de(n, e)
        }
    }

    function Qe(n, e) {
        var t = n ? n.length : 0;
        if (typeof t == "number") {
            while (t--) {
                if (e(n[t], t, n) === false) {
                    break
                }
            }
        } else {
            var u = pe(n);
            t = u.length;
            de(n, function (n, i, f) {
                i = u ? u[--t] : --t;
                return e(f[i], i, f) === false && r
            })
        }
    }

    var Xe = te(function (n, e, r) {
        (F.call(n, r) ? n[r] : n[r] = []).push(e)
    });
    var Ye = te(function (n, e, r) {
        n[r] = e
    });

    function Ze(n, e) {
        var r = A(arguments, 2), t = -1, u = typeof e == "function", i = n ? n.length : 0, f = Array(typeof i == "number" ? i : 0);
        Le(n, function (n) {
            f[++t] = (u ? e : n[e]).apply(n, r)
        });
        return f
    }

    function nr(n, e, r) {
        var t = -1, u = n ? n.length : 0;
        e = Ur(e, r, 3);
        if (typeof u == "number") {
            var i = Array(u);
            while (++t < u) {
                i[t] = e(n[t], t, n)
            }
        } else {
            i = [];
            de(n, function (n, r, u) {
                i[++t] = e(n, r, u)
            })
        }
        return i
    }

    function er(n, e, r) {
        var t = -Infinity, u = t;
        if (typeof e != "function" && r && r[e] === n) {
            e = null
        }
        var i = -1, f = n ? n.length : 0;
        if (e == null && typeof f == "number") {
            while (++i < f) {
                var a = n[i];
                if (a > u) {
                    u = a
                }
            }
        } else {
            e = Ur(e, r, 3);
            Le(n, function (n, r, i) {
                var f = e(n, r, i);
                if (f > t) {
                    t = f;
                    u = n
                }
            })
        }
        return u
    }

    function rr(n, e, r) {
        var t = Infinity, u = t;
        if (typeof e != "function" && r && r[e] === n) {
            e = null
        }
        var i = -1, f = n ? n.length : 0;
        if (e == null && typeof f == "number") {
            while (++i < f) {
                var a = n[i];
                if (a < u) {
                    u = a
                }
            }
        } else {
            e = Ur(e, r, 3);
            Le(n, function (n, r, i) {
                var f = e(n, r, i);
                if (f < t) {
                    t = f;
                    u = n
                }
            })
        }
        return u
    }

    var tr = nr;

    function ur(n, e, r, t) {
        if (!n)return r;
        var u = arguments.length < 3;
        e = Ur(e, t, 4);
        var i = -1, f = n.length;
        if (typeof f == "number") {
            if (u) {
                r = n[++i]
            }
            while (++i < f) {
                r = e(r, n[i], i, n)
            }
        } else {
            de(n, function (n, t, i) {
                r = u ? (u = false, n) : e(r, n, t, i)
            })
        }
        return r
    }

    function ir(n, e, r, t) {
        var u = arguments.length < 3;
        e = Ur(e, t, 4);
        Qe(n, function (n, t, i) {
            r = u ? (u = false, n) : e(r, n, t, i)
        });
        return r
    }

    function fr(n, e, r) {
        e = Ur(e, r, 3);
        return He(n, function (n, r, t) {
            return!e(n, r, t)
        })
    }

    function ar(e, r, t) {
        if (e && typeof e.length != "number") {
            e = Pe(e)
        }
        if (r == null || t) {
            return e ? e[ee(0, e.length - 1)] : n
        }
        var u = or(e);
        u.length = U(P(0, r), u.length);
        return u
    }

    function or(n) {
        var e = -1, r = n ? n.length : 0, t = Array(typeof r == "number" ? r : 0);
        Le(n, function (n) {
            var r = ee(0, ++e);
            t[e] = t[r];
            t[r] = n
        });
        return t
    }

    function lr(n) {
        var e = n ? n.length : 0;
        return typeof e == "number" ? e : pe(n).length
    }

    function cr(n, e, t) {
        var u;
        e = Ur(e, t, 3);
        var i = -1, f = n ? n.length : 0;
        if (typeof f == "number") {
            while (++i < f) {
                if (u = e(n[i], i, n)) {
                    break
                }
            }
        } else {
            de(n, function (n, t, i) {
                return(u = e(n, t, i)) && r
            })
        }
        return!!u
    }

    function sr(n, e, r) {
        var t = -1, u = n ? n.length : 0, i = Array(typeof u == "number" ? u : 0);
        e = Ur(e, r, 3);
        Le(n, function (n, r, u) {
            i[++t] = {criteria: [e(n, r, u)], index: t, value: n}
        });
        u = i.length;
        i.sort(T);
        while (u--) {
            i[u] = i[u].value
        }
        return i
    }

    function pr(n) {
        if (ce(n)) {
            return A(n)
        }
        if (n && typeof n.length == "number") {
            return nr(n)
        }
        return Pe(n)
    }

    function hr(e, r, t) {
        return t && Oe(r) ? n : (t ? Je : He)(e, r)
    }

    function vr(n) {
        var e = -1, r = n ? n.length : 0, t = [];
        while (++e < r) {
            var u = n[e];
            if (u) {
                t.push(u)
            }
        }
        return t
    }

    function gr(n) {
        return Y(n, Z(arguments, true, true, 1))
    }

    function yr(e, r, t) {
        var u = 0, i = e ? e.length : 0;
        if (typeof r != "number" && r != null) {
            var f = -1;
            r = Ur(r, t, 3);
            while (++f < i && r(e[f], f, e)) {
                u++
            }
        } else {
            u = r;
            if (u == null || t) {
                return e ? e[0] : n
            }
        }
        return A(e, 0, U(P(0, u), i))
    }

    function mr(n, e) {
        return Z(n, e)
    }

    function wr(n, e, r) {
        if (typeof r == "number") {
            var t = n ? n.length : 0;
            r = r < 0 ? P(0, t + r) : r || 0
        } else if (r) {
            var u = Er(n, e);
            return n[u] === e ? u : -1
        }
        return x(n, e, r)
    }

    function _r(n, e, r) {
        var t = 0, u = n ? n.length : 0;
        if (typeof e != "number" && e != null) {
            var i = u;
            e = Ur(e, r, 3);
            while (i-- && e(n[i], i, n)) {
                t++
            }
        } else {
            t = e == null || r ? 1 : e || t
        }
        return A(n, 0, U(P(0, u - t), u))
    }

    function br() {
        var n = [], e = -1, r = arguments.length;
        while (++e < r) {
            var t = arguments[e];
            if (ce(t) || le(t)) {
                n.push(t)
            }
        }
        var u = n[0], i = -1, f = fe(), a = u ? u.length : 0, o = [];
        n:while (++i < a) {
            t = u[i];
            if (f(o, t) < 0) {
                var e = r;
                while (--e) {
                    if (f(n[e], t) < 0) {
                        continue n
                    }
                }
                o.push(t)
            }
        }
        return o
    }

    function dr(e, r, t) {
        var u = 0, i = e ? e.length : 0;
        if (typeof r != "number" && r != null) {
            var f = i;
            r = Ur(r, t, 3);
            while (f-- && r(e[f], f, e)) {
                u++
            }
        } else {
            u = r;
            if (u == null || t) {
                return e ? e[i - 1] : n
            }
        }
        return A(e, P(0, i - u))
    }

    function jr(n, e, r) {
        var t = n ? n.length : 0;
        if (typeof r == "number") {
            t = (r < 0 ? P(0, t + r) : U(r, t - 1)) + 1
        }
        while (t--) {
            if (n[t] === e) {
                return t
            }
        }
        return-1
    }

    function xr(n, e, r) {
        n = +n || 0;
        r = +r || 1;
        if (e == null) {
            e = n;
            n = 0
        }
        var t = -1, u = P(0, I((e - n) / r)), i = Array(u);
        while (++t < u) {
            i[t] = n;
            n += r
        }
        return i
    }

    function Tr(n, e, r) {
        if (typeof e != "number" && e != null) {
            var t = 0, u = -1, i = n ? n.length : 0;
            e = Ur(e, r, 3);
            while (++u < i && e(n[u], u, n)) {
                t++
            }
        } else {
            t = e == null || r ? 1 : P(0, e)
        }
        return A(n, t)
    }

    function Er(n, e, r, t) {
        var u = 0, i = n ? n.length : u;
        r = r ? Ur(r, t, 1) : Gr;
        e = r(e);
        while (u < i) {
            var f = u + i >>> 1;
            r(n[f]) < e ? u = f + 1 : i = f
        }
        return u
    }

    function Ar() {
        return re(Z(arguments, true, true))
    }

    function Sr(n, e, r, t) {
        if (typeof e != "boolean" && e != null) {
            t = r;
            r = typeof e != "function" && t && t[e] === n ? null : e;
            e = false
        }
        if (r != null) {
            r = Ur(r, t, 3)
        }
        return re(n, e, r)
    }

    function Or(n) {
        return Y(n, A(arguments, 1))
    }

    function kr() {
        var n = -1, e = er(tr(arguments, "length")), r = Array(e < 0 ? 0 : e);
        while (++n < e) {
            r[n] = tr(arguments, n)
        }
        return r
    }

    function Nr(n, e) {
        var r = -1, t = n ? n.length : 0, u = {};
        if (!e && t && !ce(n[0])) {
            e = []
        }
        while (++r < t) {
            var i = n[r];
            if (e) {
                u[i] = e[r]
            } else if (i) {
                u[i[0]] = i[1]
            }
        }
        return u
    }

    function Rr(n, e) {
        if (!Re(e)) {
            throw new TypeError
        }
        return function () {
            if (--n < 1) {
                return e.apply(this, arguments)
            }
        }
    }

    function Ir(n, e) {
        return arguments.length > 2 ? ue(n, 17, A(arguments, 2), null, e) : ue(n, 1, null, null, e)
    }

    function Br(n) {
        var e = arguments.length > 1 ? Z(arguments, true, false, 1) : je(n), r = -1, t = e.length;
        while (++r < t) {
            var u = e[r];
            n[u] = ue(n[u], 1, null, null, n)
        }
        return n
    }

    function Fr() {
        var n = arguments, e = n.length;
        while (e--) {
            if (!Re(n[e])) {
                throw new TypeError
            }
        }
        return function () {
            var e = arguments, r = n.length;
            while (r--) {
                e = [n[r].apply(this, e)]
            }
            return e[0]
        }
    }

    function qr(e, r, t) {
        var u, i, f, a, o, l, c, s = 0, p = false, h = true;
        if (!Re(e)) {
            throw new TypeError
        }
        r = P(0, r) || 0;
        if (t === true) {
            var v = true;
            h = false
        } else if (Ie(t)) {
            v = t.leading;
            p = "maxWait"in t && (P(r, t.maxWait) || 0);
            h = "trailing"in t ? t.trailing : h
        }
        var g = function () {
            var t = r - (Lr() - a);
            if (t <= 0) {
                if (i) {
                    clearTimeout(i)
                }
                var p = c;
                i = l = c = n;
                if (p) {
                    s = Lr();
                    f = e.apply(o, u);
                    if (!l && !i) {
                        u = o = null
                    }
                }
            } else {
                l = setTimeout(g, t)
            }
        };
        var y = function () {
            if (l) {
                clearTimeout(l)
            }
            i = l = c = n;
            if (h || p !== r) {
                s = Lr();
                f = e.apply(o, u);
                if (!l && !i) {
                    u = o = null
                }
            }
        };
        return function () {
            u = arguments;
            a = Lr();
            o = this;
            c = h && (l || !v);
            if (p === false) {
                var n = v && !l
            } else {
                if (!i && !v) {
                    s = a
                }
                var t = p - (a - s), m = t <= 0;
                if (m) {
                    if (i) {
                        i = clearTimeout(i)
                    }
                    s = a;
                    f = e.apply(o, u)
                } else if (!i) {
                    i = setTimeout(y, t)
                }
            }
            if (m && l) {
                l = clearTimeout(l)
            } else if (!l && r !== p) {
                l = setTimeout(g, r)
            }
            if (n) {
                m = true;
                f = e.apply(o, u)
            }
            if (m && !l && !i) {
                u = o = null
            }
            return f
        }
    }

    function Dr(e) {
        if (!Re(e)) {
            throw new TypeError
        }
        var r = A(arguments, 1);
        return setTimeout(function () {
            e.apply(n, r)
        }, 1)
    }

    function Mr(e, r) {
        if (!Re(e)) {
            throw new TypeError
        }
        var t = A(arguments, 2);
        return setTimeout(function () {
            e.apply(n, t)
        }, r)
    }

    function $r(n, e) {
        var r = {};
        return function () {
            var u = e ? e.apply(this, arguments) : t + arguments[0];
            return F.call(r, u) ? r[u] : r[u] = n.apply(this, arguments)
        }
    }

    function Wr(n) {
        var e, r;
        if (!Re(n)) {
            throw new TypeError
        }
        return function () {
            if (e) {
                return r
            }
            e = true;
            r = n.apply(this, arguments);
            n = null;
            return r
        }
    }

    function zr(n) {
        return ue(n, 16, A(arguments, 1))
    }

    function Cr(n, e, r) {
        var t = true, u = true;
        if (!Re(n)) {
            throw new TypeError
        }
        if (r === false) {
            t = false
        } else if (Ie(r)) {
            t = "leading"in r ? r.leading : t;
            u = "trailing"in r ? r.trailing : u
        }
        r = {};
        r.leading = t;
        r.maxWait = e;
        r.trailing = u;
        return qr(n, e, r)
    }

    function Pr(n, e) {
        return ue(e, 16, [n])
    }

    function Ur(n, e, r) {
        var t = typeof n;
        if (n == null || t == "function") {
            return Q(n, e, r)
        }
        if (t != "object") {
            return Qr(n)
        }
        var u = pe(n);
        return function (e) {
            var r = u.length, t = false;
            while (r--) {
                if (!(t = e[u[r]] === n[u[r]])) {
                    break
                }
            }
            return t
        }
    }

    function Vr(n) {
        return n == null ? "" : String(n).replace(ye, ie)
    }

    function Gr(n) {
        return n
    }

    function Hr(n) {
        Le(je(n), function (e) {
            var r = G[e] = n[e];
            G.prototype[e] = function () {
                var n = [this.__wrapped__];
                q.apply(n, arguments);
                var e = r.apply(G, n);
                return this.__chain__ ? new H(e, true) : e
            }
        })
    }

    function Jr() {
        w._ = k;
        return this
    }

    function Kr() {
    }

    var Lr = ae(Lr = Date.now) && Lr || function () {
        return(new Date).getTime()
    };

    function Qr(n) {
        return function (e) {
            return e[n]
        }
    }

    function Xr(n, e) {
        if (n == null && e == null) {
            e = 1
        }
        n = +n || 0;
        if (e == null) {
            e = n;
            n = 0
        } else {
            e = +e || 0
        }
        return n + B(V() * (e - n + 1))
    }

    function Yr(n, e) {
        if (n) {
            var r = n[e];
            return Re(r) ? n[e]() : r
        }
    }

    function Zr(n, e, r) {
        var t = G, u = t.templateSettings;
        n = String(n || "");
        r = _e({}, r, u);
        var a = 0, o = "__p += '", l = r.variable;
        var c = RegExp((r.escape || i).source + "|" + (r.interpolate || i).source + "|" + (r.evaluate || i).source + "|$", "g");
        n.replace(c, function (e, r, t, u, i) {
            o += n.slice(a, i).replace(f, E);
            if (r) {
                o += "' +\n_.escape(" + r + ") +\n'"
            }
            if (u) {
                o += "';\n" + u + ";\n__p += '"
            }
            if (t) {
                o += "' +\n((__t = (" + t + ")) == null ? '' : __t) +\n'"
            }
            a = i + e.length;
            return e
        });
        o += "';\n";
        if (!l) {
            l = "obj";
            o = "with (" + l + " || {}) {\n" + o + "\n}\n"
        }
        o = "function(" + l + ") {\n" + "var __t, __p = '', __j = Array.prototype.join;\n" + "function print() { __p += __j.call(arguments, '') }\n" + o + "return __p\n}";
        try {
            var s = Function("_", "return " + o)(t)
        } catch (p) {
            p.source = o;
            throw p
        }
        if (e) {
            return s(e)
        }
        s.source = o;
        return s
    }

    function nt(n, e, r) {
        n = (n = +n) > -1 ? n : 0;
        var t = -1, u = Array(n);
        e = Q(e, r, 1);
        while (++t < n) {
            u[t] = e(t)
        }
        return u
    }

    function et(n) {
        return n == null ? "" : String(n).replace(ge, oe)
    }

    function rt(n) {
        var r = ++e + "";
        return n ? n + r : r
    }

    function tt(n) {
        n = new H(n);
        n.__chain__ = true;
        return n
    }

    function ut(n, e) {
        e(n);
        return n
    }

    function it() {
        this.__chain__ = true;
        return this
    }

    function ft() {
        return this.__wrapped__
    }

    G.after = Rr;
    G.bind = Ir;
    G.bindAll = Br;
    G.chain = tt;
    G.compact = vr;
    G.compose = Fr;
    G.countBy = Ve;
    G.debounce = qr;
    G.defaults = _e;
    G.defer = Dr;
    G.delay = Mr;
    G.difference = gr;
    G.filter = He;
    G.flatten = mr;
    G.forEach = Le;
    G.functions = je;
    G.groupBy = Xe;
    G.indexBy = Ye;
    G.initial = _r;
    G.intersection = br;
    G.invert = Te;
    G.invoke = Ze;
    G.keys = pe;
    G.map = nr;
    G.max = er;
    G.memoize = $r;
    G.min = rr;
    G.omit = We;
    G.once = Wr;
    G.pairs = ze;
    G.partial = zr;
    G.pick = Ce;
    G.pluck = tr;
    G.range = xr;
    G.reject = fr;
    G.rest = Tr;
    G.shuffle = or;
    G.sortBy = sr;
    G.tap = ut;
    G.throttle = Cr;
    G.times = nt;
    G.toArray = pr;
    G.union = Ar;
    G.uniq = Sr;
    G.values = Pe;
    G.where = hr;
    G.without = Or;
    G.wrap = Pr;
    G.zip = kr;
    G.collect = nr;
    G.drop = Tr;
    G.each = Le;
    G.extend = me;
    G.methods = je;
    G.object = Nr;
    G.select = He;
    G.tail = Tr;
    G.unique = Sr;
    G.clone = we;
    G.contains = Ue;
    G.escape = Vr;
    G.every = Ge;
    G.find = Je;
    G.has = xe;
    G.identity = Gr;
    G.indexOf = wr;
    G.isArguments = le;
    G.isArray = ce;
    G.isBoolean = Ee;
    G.isDate = Ae;
    G.isElement = Se;
    G.isEmpty = Oe;
    G.isEqual = ke;
    G.isFinite = Ne;
    G.isFunction = Re;
    G.isNaN = Be;
    G.isNull = Fe;
    G.isNumber = qe;
    G.isObject = Ie;
    G.isRegExp = De;
    G.isString = Me;
    G.isUndefined = $e;
    G.lastIndexOf = jr;
    G.mixin = Hr;
    G.noConflict = Jr;
    G.random = Xr;
    G.reduce = ur;
    G.reduceRight = ir;
    G.result = Yr;
    G.size = lr;
    G.some = cr;
    G.sortedIndex = Er;
    G.template = Zr;
    G.unescape = et;
    G.uniqueId = rt;
    G.all = Ge;
    G.any = cr;
    G.detect = Je;
    G.findWhere = Ke;
    G.foldl = ur;
    G.foldr = ir;
    G.include = Ue;
    G.inject = ur;
    G.first = yr;
    G.last = dr;
    G.sample = ar;
    G.take = yr;
    G.head = yr;
    Hr(G);
    G.VERSION = "2.4.1";
    G.prototype.chain = it;
    G.prototype.value = ft;
    Le(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function (n) {
        var e = S[n];
        G.prototype[n] = function () {
            var n = this.__wrapped__;
            e.apply(n, arguments);
            if (!J.spliceObjects && n.length === 0) {
                delete n[0]
            }
            return this
        }
    });
    Le(["concat", "join", "slice"], function (n) {
        var e = S[n];
        G.prototype[n] = function () {
            var n = this.__wrapped__, r = e.apply(n, arguments);
            if (this.__chain__) {
                r = new H(r);
                r.__chain__ = true
            }
            return r
        }
    });
    if (typeof define == "function" && typeof define.amd == "object" && define.amd) {
        w._ = G;
        define(function () {
            return G
        })
    } else if (_ && b) {
        if (d) {
            (b.exports = G)._ = G
        } else {
            _._ = G
        }
    } else {
        w._ = G
    }
}.call(this);
!function (n) {
    var r = n("html");
    var i = false;
    var e = {};
    var t = [];

    function a() {
        n.each(e, function (n, r) {
            if (!o(n, t)) {
                r.dom.parent(".eleme_dropdown").removeClass("open");
                if (r.fnHide) {
                    r.fnHide()
                }
                delete e[n]
            }
        });
        t = [];
        if (!d(e)) {
            r.unbind("click", a);
            i = false
        }
    }

    function f(f, o, u) {
        var s = f.data("__rsiId") || c();
        if (!f.data("__rsiId")) {
            f.data("__rsiId", s)
        } else if (e[s]) {
            return
        }
        e[s] = {dom: f, fnShow: o, fnHide: u};
        t.push(s);
        if (!f.data("__rsiEvent")) {
            f.bind("click", function () {
                t.push(n(this).data("__rsiId"))
            });
            f.data("__rsiEvent", true)
        }
        f.parent(".eleme_dropdown").addClass("open");
        if (o) {
            o()
        }
        if (d(e) && !i) {
            r.bind("click", a);
            i = true
        }
    }

    n.fn.uDropdown = function (r, i) {
        this.each(function () {
            var e = n(this);
            var t = e.children(".e_toggle");
            var a = e.children(".e_dropdown");
            t.bind("click", function () {
                f(a, r, i)
            })
        })
    };
    n.fn.uCloseDropdown = function () {
        this.each(function () {
            var r = n(this).children(".e_dropdown");
            var i = r.data("__rsiId");
            if (!i) {
                return
            }
            var e = n.inArray(i, t);
            if (e >= 0) {
                t.splice(e, 1)
            }
        });
        r.click()
    };
    function o(r, i) {
        return n.inArray(r, i) >= 0
    }

    function d(r) {
        if (!Object.keys) {
            Object.keys = function (n) {
                var r = [];
                for (var i in n) {
                    if (n.hasOwnProperty(i)) {
                        r.push(i)
                    }
                }
                return r
            }
        }
        d = function (r) {
            if (n.isArray(r)) {
                return r.length
            } else if (n.isPlainObject(r)) {
                return Object.keys(r).length
            }
            return 0
        };
        return d(r)
    }

    function c(n) {
        var r = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".split("");
        var i = r.length;
        c = function (n) {
            n = n || 16;
            if (n > 128) {
                n = 128
            }
            var e = "";
            for (var t = 0; t < n; t++) {
                e += r[Math.floor(Math.random() * i)]
            }
            return e
        };
        return c(n)
    }
}(jQuery);
!function (t) {
    t.fn.showAlertTip = function (e, r) {
        if (!this.length) {
            return this
        }
        r = r || {};
        var i, o, s, f, n, p = this, h = p[0].offsetWidth, l = p.position(), u = r.noTemplate ? e : '<span class="error_tip ui-tip-notice error">' + e + "</span>";
        i = t(u);
        i.detach().css({top: 0, left: 0});
        p.before(i);
        o = i[0].offsetWidth;
        s = i[0].offsetHeight;
        f = r.outer ? l.left : (h - o) / 2 + l.left;
        n = l.top - s - 10;
        i.css({left: f, top: n});
        return this
    };
    t.fn.removeAlertTip = function () {
        this.prev(".error_tip").remove();
        return this
    }
}(jQuery);
!function () {
    "use strict";
    if (typeof Eleme === "undefined") {
        window.Eleme = {}
    }
    var e, n, i, t = {}, o = $(window);
    e = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (e) {
        window.setTimeout(e, 200)
    };
    n = window.cancelRequestAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || window.clearTimeout;
    function a() {
    }

    function u(e) {
        return typeof e === "undefined"
    }

    o.on("scroll.scrollspy", function () {
        if (!i) {
            i = e(r)
        }
    });
    function r() {
        var e = o.scrollTop();
        _.each(t, function (n) {
            var i = n.getCurrent(e);
            n.handle(i)
        });
        n(i);
        i = null
    }

    function m(e) {
        this.name = e;
        this.queue = [];
        this.lastIndex = undefined
    }

    m.prototype.addSub = function (e) {
        if (u(e.min) && u(e.max)) {
            return
        }
        e.onEnter = e.onEnter || a;
        e.onLeave = e.onLeave || a;
        this.queue.push(e)
    };
    m.prototype.refresh = function () {
        this.queue.length = 0
    };
    m.prototype.getCurrent = function (e) {
        var n, i, t, o = this.queue.length;
        while (n = this.queue[--o]) {
            i = n.min;
            t = n.max;
            if (i && t && i < e && t > e || !t && i && i < e || !i && t && t > e) {
                return o
            }
        }
    };
    m.prototype.handle = function (e) {
        var n = this.queue, i = this.lastIndex, t = n[i], o = n[e];
        if (!u(e) && e !== i) {
            o.onEnter(o);
            if (!u(i)) {
                t.onLeave(t)
            }
            this.lastIndex = e
        } else if (u(e) && i !== e) {
            t.onLeave(t);
            this.lastIndex = undefined
        }
    };
    var f = function (e, n, i) {
        if (!e) {
            return this
        }
        var o = t[e];
        if (!o) {
            o = t[e] = new m(e)
        }
        if (typeof n === "object" && typeof i === "undefined") {
            i = n;
            n = "append"
        }
        if (n === "append") {
            o.addSub({min: i.min, max: i.max, onEnter: i.onEnter, onLeave: i.onLeave})
        } else if (n === "flush") {
            o.refresh()
        }
        return o
    };
    if (typeof Eleme.Component === "undefined") {
        Eleme.Component = {}
    }
    Eleme.Component.scrollspy = f
}();
$(document).ready(function () {
    $(".eleme_dropdown:not(#topbar_msg, #topbar_cart)").uDropdown();
    $('input:not([type="password"]), textarea').placeholder();
    $('[data-toggle="bs-tooltip"]').tooltip({animation: false, placement: "top", delay: {show: 700, hide: 0}, container: "body"});
    if ($("#mod_fixed").length > 0) {
        var e = $("#mod_fixed");
        Eleme.Component.scrollspy("fixedMod", {min: 300, onEnter: function () {
            e.find("#back_top").removeClass("ui_invisible")
        }, onLeave: function () {
            e.find("#back_top").addClass("ui_invisible")
        }});
        $("#back_top").on("click", function () {
            $("html, body").animate({scrollTop: "0px"}, 300)
        })
    }
    var t = {feedbackUrl: "/feedback/addSuggestion", feedbackModalSelector: "#modal_feedback", feedbackInputSelector: "#feedback_input", feedbackFormSelector: "#feedback_form", feedbackErrorSelector: ".feedback_err_tip", cancelFeedbackSelector: ".cancel_feedback", submitFeedbackSelector: ".submit_feedback"};
    $(t.feedbackFormSelector).on("submit", function (e) {
        var o = "http://" + ELEME.mainHost + t.feedbackUrl, a = $.trim($(t.feedbackInputSelector).val());
        e.preventDefault();
        if (a === "") {
            $(t.feedbackErrorSelector).html("亲爱的用户，您还没有添加反馈意见").removeClass("hide");
            return
        }
        $(t.submitFeedbackSelector).html("正在提交");
        Eleme.Common.Http.request({url: o, type: "get", dataType: "jsonp", data: {content: a}}).done(function (e, o, a) {
            $(t.feedbackModalSelector).modal("hide");
            $(t.feedbackInputSelector).val("");
            $(t.feedbackErrorSelector).html("").addClass("hide");
            $(t.submitFeedbackSelector).html("提交")
        }).fail(function (e) {
            $(t.feedbackErrorSelector).html(e.msg).removeClass("hide");
            $(t.submitFeedbackSelector).html("提交")
        })
    });
    $(t.cancelFeedbackSelector).on("click", function () {
        $(t.feedbackErrorSelector).addClass("hide").html("")
    })
});
!function () {
    var t = function () {
        "use strict";
        var t;

        function e(t) {
            this.tagNames = [t || null];
            this.buffer = "";
            this.id = null;
            this.className = null;
            this.style = null
        }

        e.prototype.begin = function (t) {
            this.tagNames.push(t || null)
        };
        e.prototype.push = function (t) {
            this.buffer += t
        };
        e.prototype.pushOpenTag = function () {
            var t = this.getCurrentTag(), e = this.id, n = this.className, r = this.style;
            this.buffer += "<" + t;
            if (e) {
                this.buffer += ' id="' + this.id + '"';
                this.id = null
            }
            if (n) {
                this.buffer += ' class="' + this.className + '"';
                this.className = null
            }
            if (r) {
                this.buffer += ' style="' + this.style + '"';
                this.style = null
            }
            this.buffer += ">"
        };
        e.prototype.pushCloseTag = function () {
            var t = this.tagNames.pop();
            this.buffer += "</" + t + ">"
        };
        e.prototype.setId = function (t) {
            this.id = t;
            return this
        };
        e.prototype.setClass = function (t) {
            this.className = t;
            return this
        };
        e.prototype.setStyle = function (t) {
            this.style = t;
            return this
        };
        e.prototype.getCurrentTag = function () {
            return this.tagNames[this.tagNames.length - 1]
        };
        t = e;
        return t
    }();
    var e = function () {
        "use strict";
        var t;
        var e = {on: function (t, e, n) {
            var r = this.getEvents();
            if (typeof t !== "string" || !e || typeof e !== "function") {
                return
            }
            r[t] || (r[t] = []);
            r[t].push({callback: e, context: n})
        }, off: function (t, e) {
            var n = this.getEvents();
            if (!t && !e) {
                this.events = {};
                return
            }
            if (!n[t]) {
                return
            }
            if (n[t] && !e) {
                delete n[t];
                return
            }
            var r, i = [], o = n[t], s = o.length;
            while (s--) {
                r = o[s];
                if (r && r.callback !== e) {
                    i.push(r)
                }
            }
            if (i.length === 0) {
                delete n[t]
            } else {
                n[t] = i
            }
        }, once: function (t, e, n) {
            var r, i = this, o = this.getEvents();
            o[t] || (o[t] = []);
            r = function () {
                i.off(t, r);
                e.apply(this, arguments)
            };
            o[t].push({callback: r, context: n})
        }, trigger: function (t) {
            var e, n, r = this.getEvents(), i = r[t], o = Array.prototype.slice.call(arguments, 1);
            if (!i || i.length === 0) {
                if (window.console && typeof window.console.log === "function") {
                    console.log("no one subscribe topic", t)
                }
                return
            }
            for (e = i.length; e--;) {
                n = i[e].callback.apply(i[e].context, o)
            }
            return n
        }, listenTo: function (t, e, n, r) {
            if (typeof t !== "object" || typeof t.on !== "function") {
                return
            }
            t.on(e, n, r)
        }, stopListening: function (t, e, n) {
            if (typeof t !== "object" || typeof t.off !== "function") {
                return
            }
            t.off(e, n)
        }, getEvents: function () {
            return this.events || (this.events = {})
        }};
        t = e;
        return t
    }();
    var n = function (t) {
        "use strict";
        var e;
        var n = t;

        function r() {
        }

        r.prototype = n;
        r.prototype.constructor = r;
        r.prototype.publish = n.trigger;
        r.prototype.subscribe = n.on;
        r.prototype.cancelSub = n.off;
        r.prototype.subscribeOnce = n.once;
        r.prototype.subscribeMany = function (t, e, n) {
            if (Object.prototype.toString.call(t) !== "[object Array]" || t.length === 0) {
                return
            }
            var r, i, o, s = this, u = [], a = t.join("-");
            for (r = t.length; r--;) {
                !function (e) {
                    s.subscribeOnce(t[r], function () {
                        if (u.length === 1) {
                            s.publish(a)
                        } else {
                            for (i = u.length; i--;) {
                                if (u[i] === e) {
                                    u.splice(i, i + 1)
                                }
                            }
                        }
                    })
                }(t[r]);
                u.push(t[r])
            }
            o = function () {
                e.call(n);
                s.cancelSub(a)
            };
            this.subscribe(a, o, n)
        };
        var i = new r;
        e = i;
        return e
    }(e);
    var r = function () {
        "use strict";
        var t;
        var e = {multiply: function (t, e) {
            var n = 0, r, i;
            r = (t + "").split(".");
            i = (e + "").split(".");
            if (r.length === 2) {
                n += r[1].length;
                t = t * Math.pow(10, r[1].length)
            }
            if (i.length === 2) {
                n += i[1].length;
                e = e * Math.pow(10, i[1].length)
            }
            return t * e / Math.pow(10, n)
        }, add: function (t, e) {
            var n = 0, r, i;
            r = (t + "").split(".");
            i = (e + "").split(".");
            if (r.length === 2) {
                n = Math.max(r[1].length, n)
            }
            if (i.length === 2) {
                n = Math.max(i[1].length, n)
            }
            if (!n) {
                return t + e
            }
            t = t * Math.pow(10, n);
            e = e * Math.pow(10, n);
            return(t + e) / Math.pow(10, n)
        }, inherit: function (t, e) {
            if (!t) {
                throw new Error("lack of destination class")
            }
            e = e || Function;
            if (typeof t !== "function") {
                throw new Error("Dest need to be function")
            }
            function n() {
            }

            n.prototype = e.prototype;
            t.prototype = new n;
            t._super = e;
            t.prototype.constructor = t;
            return t
        }};
        t = e;
        return t
    }();
    var i = function () {
        "use strict";
        var t;
        _.templateSettings.variable = "data";
        var e = {};
        var n = function (t) {
            this.templateId = t;
            this.compiledTemplate = null
        };
        n.prototype.load = function () {
            if (this.compiledTemplate) {
                return this.compiledTemplate
            }
            var t = this.loadTemplate(this.templateId);
            this.compiledTemplate = this.compileTemplate(t);
            return this.compiledTemplate
        };
        n.prototype.loadTemplate = function (t) {
            var e = $(t).html();
            $(t).remove();
            return e
        };
        n.prototype.compileTemplate = function (t) {
            return _.template(t)
        };
        var r = {get: function (t) {
            var r = e[t];
            if (!r) {
                r = new n(t);
                e[t] = r
            }
            return r.load()
        }};
        t = r;
        return t
    }();
    var o = function () {
        "use strict";
        var t;
        var e = {request: function (t) {
            n(t);
            t.data = t.data || {};
            if (ELEME.csrfToken) {
                t.data.csrf_token = ELEME.csrfToken
            }
            return $.ajax(t).then(function (t, e, n) {
                if (!arguments.length) {
                    return
                }
                var r = $.Deferred();
                if (t.status === "ok") {
                    return r.resolveWith(null, [t.data, e, n])
                } else if (t.status === "error") {
                    return r.rejectWith(null, [t.error, e, n])
                }
            }, function (t, e, n) {
                var r = $.Deferred();
                var i = {code: -1, msg: "请求出错"};
                return r.rejectWith(null, [i, e, t])
            })
        }};

        function n(t) {
            for (var e in t) {
                if (e === "success" || e === "error") {
                    throw new Error("dont't use success and error callback in request options, use done, fail, or then")
                }
            }
        }

        t = e;
        return t
    }();
    var s = function () {
        "use strict";
        var t;
        var e = {tel: /^([2-9]\d{2,7})(-\d{3,5})*$/, cellphone: /^1[34578]\d{9}$/};
        t = e;
        return t
    }();
    var u = function () {
        "use strict";
        var t;
        var e = {format: function (t) {
            t *= 1e3;
            var e, n, r, i = new Date(t), o = new Date, s = o.getTime();
            o.setHours(0, 0, 0, 0);
            n = o.getTime();
            o.setTime(n - 24 * 3600 * 1e3);
            r = o.getTime();
            e = s - t;
            if (e < 60 * 1e3) {
                return"刚刚"
            }
            if (e < 3600 * 1e3) {
                return Math.round(e / (60 * 1e3)) + "分钟前"
            }
            if (i.getTime() > n) {
                return Math.round(e / (3600 * 1e3)) + "小时前"
            }
            if (t < n && t > r) {
                return"昨天"
            }
            if (i.getFullYear() === o.getFullYear()) {
                return i.getMonth() + 1 + "月" + i.getDate() + "日"
            }
            return i.getFullYear() + "年" + (i.getMonth() + 1) + "月" + i.getDate() + "日"
        }};
        t = e;
        return t
    }();
    !function (t, e, n, r, i, o, s, u) {
        "use strict";
        var a = t;
        var l = e;
        var f = n;
        var c = r;
        var p = i;
        var h = o;
        var g = s;
        var v = u;
        if (typeof Eleme === "undefined") {
            window.Eleme = {}
        }
        Eleme.Common = {RenderBuffer: a, Evt: l, Util: c, Time: v, Http: h, PubSub: f, Regex: g, TemplateCache: p}
    }(t, e, n, r, i, o, s, u)
}();